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: