Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Fungsi TRUNC(tanggal) di Oracle

Di Oracle Database, TRUNC(date) fungsi mengembalikan nilai tanggal yang diberikan dengan bagian waktu hari itu terpotong ke unit yang disediakan dalam model format yang ditentukan.

Oracle juga memiliki TRUNC(number) sintaks, yang digunakan pada angka. Artikel ini semata-mata tentang TRUNC(date) sintaks, yang digunakan pada tanggal.

Sintaks

Sintaksnya seperti ini:

TRUNC(date [, fmt ])

Dimana date adalah tanggal untuk dipotong, dan fmt adalah model format opsional yang menentukan unit yang nilainya akan dipotong. Model format dapat berupa model format yang didukung untuk TRUNC(date) dan ROUND(date) fungsi.

Fungsi ini beroperasi sesuai dengan aturan kalender Gregorian (tidak sensitif terhadap nilai NLS_CALENDAR parameter).

Contoh

Ini contohnya:

SELECT TRUNC(DATE '2035-08-22', 'MONTH')
FROM DUAL;

Hasil:

01-AUG-35

Berikut beberapa lainnya:

SELECT 
    TRUNC(DATE '2035-08-22', 'D') AS "D",
    TRUNC(DATE '2035-08-22', 'DD') AS "DD",
    TRUNC(DATE '2035-08-22', 'MONTH') AS "Month",
    TRUNC(DATE '2035-08-22', 'YEAR') AS "Year",
    TRUNC(DATE '2035-08-22', 'CC') AS "CC"
FROM DUAL;

Hasil:

           D           DD        Month         Year           CC 
____________ ____________ ____________ ____________ ____________ 
19-AUG-35    22-AUG-35    01-AUG-35    01-JAN-35    01-JAN-01   

Hasilnya diformat sesuai dengan format tanggal untuk sesi saat ini. Lihat Cara Memeriksa Format Tanggal Sesi Saat Ini dan Cara Mengubah Format Tanggal untuk Sesi Saat Ini untuk informasi lebih lanjut tentang itu.

Satuan Tanggal Default

Unit tanggal default adalah DD :

SELECT 
    TRUNC(DATE '2035-08-22') AS "Default",
    TRUNC(DATE '2035-08-22', 'DD') AS "DD"
FROM DUAL;

Hasil:

     Default           DD 
____________ ____________ 
22-AUG-35    22-AUG-35   

Dibandingkan dengan ROUND()

TRUNC(date) fungsinya berbeda dengan ROUND(date) fungsi. ROUND() fungsi membulatkan tanggal ke atas dalam beberapa kasus dan ke bawah pada kasus lain. TRUNC() fungsi, di sisi lain, cukup memotong tanggal ke unit yang ditentukan tanpa pembulatan.

Berikut perbandingan untuk menunjukkan perbedaan ini:

SELECT 
    TRUNC(DATE '2030-12-31', 'MONTH') AS "Trunc",
    ROUND(DATE '2030-12-31', 'MONTH') AS "Round"
FROM DUAL;

Hasil:

       Trunc        Round 
____________ ____________ 
01-DEC-30    01-JAN-31   

Nilai Null

Jika salah satu argumen adalah null , hasilnya null :

SET NULL 'null';
SELECT 
    TRUNC(null, 'D'),
    TRUNC(date'2020-12-30', null)
FROM DUAL;

Hasil:

   TRUNC(NULL,'D')    TRUNC(DATE'2020-12-30',NULL) 
__________________ _______________________________ 
              null null                           

Secara default, SQLcl dan SQL*Plus mengembalikan ruang kosong setiap kali nilai null muncul sebagai hasil dari SELECT SQL penyataan.

Namun, Anda dapat menggunakan SET NULL untuk menentukan string berbeda yang akan dikembalikan. Di sini saya menetapkan bahwa string null harus dikembalikan.

Jumlah Argumen Tidak Valid

Memanggil TRUNC() tanpa argumen menghasilkan kesalahan:

SELECT TRUNC()
FROM DUAL;

Hasil:

Error starting at line : 1 in command -
SELECT TRUNC()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"
*Cause:    
*Action:

Dan memanggilnya dengan terlalu banyak argumen menghasilkan kesalahan:

SELECT TRUNC(1, 2, 3)
FROM DUAL;

Hasil:

Error starting at line : 1 in command -
SELECT TRUNC(1, 2, 3)
FROM DUAL
Error at Command Line : 1 Column : 20
Error report -
SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"
*Cause:    
*Action:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLPlus - spooling ke banyak file dari blok PL/SQL

  2. DBCA Buat Database buruk REMOTE_LISTENER

  3. Agregat Oracle untuk menggabungkan string dengan koma, dan tentang menulis agregat khusus

  4. Kursor Oracle untuk penugasan

  5. Cara PLAY_SOUND di Oracle Forms