Di Oracle Database, CURRENT_TIMESTAMP()
fungsi mengembalikan tanggal dan waktu saat ini dalam zona waktu sesi, dalam nilai tipe data TIMESTAMP WITH TIME ZONE
.
Ini mirip dengan LOCALTIMESTAMP
, kecuali LOCALTIMESTAMP
mengembalikan TIMESTAMP
nilai.
Sintaks
Sintaksnya seperti ini:
CURRENT_TIMESTAMP [ (precision) ]
Di mana precision
opsional argumen menentukan presisi pecahan detik dari nilai waktu yang dikembalikan.
Saat memanggil fungsi tanpa argumen, tanda kurung harus dihilangkan.
Contoh
Berikut ini contoh pemanggilan fungsi tanpa menentukan presisi:
SELECT CURRENT_TIMESTAMP
FROM DUAL;
Hasil:
06/AUG/21 08:32:31.165866000 AM AUSTRALIA/BRISBANE
Contoh ini menampilkan tanggal dalam format berdasarkan nilai NLS_DATE_FORMAT
sistem saya parameter (yang saat ini DD/MON/RR
). Parameter ini mendapatkan nilainya dari NLS_TERRITORY
parameter (yang milik saya adalah AUSTRALIA
).
Kami memiliki opsi untuk mengubah parameter ini (misalnya, lihat Cara Mengubah Format Tanggal di Sesi Oracle Anda).
Atau, kita dapat menggunakan fungsi seperti TO_CHAR()
untuk mengembalikan hasilnya dalam format yang berbeda.
Contoh:
SELECT TO_CHAR(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
Hasil:
2021-08-06 08:44:39
Presisi
Berikut adalah contoh yang menentukan presisi. ini menentukan presisi pecahan detik dari nilai waktu yang dikembalikan.
SELECT CURRENT_TIMESTAMP(9)
FROM DUAL;
Hasil:
06/AUG/21 09:02:37.868264000 AM AUSTRALIA/BRISBANE
Perhatikan bahwa argumen presisi harus berupa angka antara 0 dan 9.
Inilah yang terjadi jika kita memberikan nilai di luar rentang tersebut:
SELECT CURRENT_TIMESTAMP(10)
FROM DUAL;
Hasil:
Error starting at line : 1 in command - SELECT CURRENT_TIMESTAMP(10) FROM DUAL Error at Command Line : 1 Column : 26 Error report - SQL Error: ORA-30088: datetime/interval precision is out of range 30088. 00000 - "datetime/interval precision is out of range" *Cause: The specified datetime/interval precision was not between 0 and 9. *Action: Use a value between 0 and 9 for datetime/interval precision.
Menghilangkan Tanda kurung tanpa Menentukan Presisi
Seperti yang disebutkan, saat memanggil CURRENT_TIMESTAMP
tanpa melewati precision
argumen, Anda harus menghilangkan tanda kurung.
Inilah yang terjadi jika kita menyertakan tanda kurung tanpa menentukan presisinya:
SELECT CURRENT_TIMESTAMP()
FROM DUAL;
Hasil:
Error starting at line : 1 in command - SELECT CURRENT_TIMESTAMP() FROM DUAL Error at Command Line : 1 Column : 26 Error report - SQL Error: ORA-30088: datetime/interval precision is out of range 30088. 00000 - "datetime/interval precision is out of range" *Cause: The specified datetime/interval precision was not between 0 and 9. *Action: Use a value between 0 and 9 for datetime/interval precision.
Kami mendapatkan kesalahan yang sama seperti pada contoh sebelumnya. Oracle Database mencari argumen presisi antara 0 dan 9, tetapi tidak ada yang lolos.
Argumen Null
Kesalahan yang sama terjadi ketika melewati null
:
SELECT CURRENT_TIMESTAMP(null)
FROM DUAL;
Hasil:
Error starting at line : 1 in command - SELECT CURRENT_TIMESTAMP(null) FROM DUAL Error at Command Line : 1 Column : 26 Error report - SQL Error: ORA-30088: datetime/interval precision is out of range 30088. 00000 - "datetime/interval precision is out of range" *Cause: The specified datetime/interval precision was not between 0 and 9. *Action: Use a value between 0 and 9 for datetime/interval precision.