Di Oracle Database, LOCALTIMESTAMP()
fungsi mengembalikan tanggal dan waktu saat ini di zona waktu sesi dalam nilai tipe data TIMESTAMP
.
Ini mirip dengan CURRENT_TIMESTAMP
, kecuali CURRENT_TIMESTAMP
mengembalikan TIMESTAMP WITH TIME ZONE
nilai.
Sintaks
Sintaksnya seperti ini:
LOCALTIMESTAMP [ (timestamp_precision) ]
Di mana timestamp_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 LOCALTIMESTAMP
FROM DUAL;
Hasil:
07/AUG/21 08:49:50.026443000 AM
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(LOCALTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
Hasil:
2021-08-07 08:50:20
Presisi
Berikut adalah contoh yang menentukan presisi. Ini menentukan presisi pecahan detik dari nilai waktu yang dikembalikan.
SELECT LOCALTIMESTAMP(9)
FROM DUAL;
Hasil:
07/AUG/21 08:50:47.203717000 AM
Perhatikan bahwa argumen presisi harus berupa angka antara 0 dan 9.
Inilah yang terjadi jika kita memberikan nilai di luar rentang tersebut:
SELECT LOCALTIMESTAMP(10)
FROM DUAL;
Hasil:
Error starting at line : 1 in command - SELECT LOCALTIMESTAMP(10) FROM DUAL Error at Command Line : 1 Column : 23 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 LOCALTIMESTAMP
tanpa melewati precision
argumen, Anda harus menghilangkan tanda kurung.
Inilah yang terjadi jika kita menyertakan tanda kurung tanpa menentukan presisinya:
SELECT LOCALTIMESTAMP()
FROM DUAL;
Hasil:
Error starting at line : 1 in command - SELECT LOCALTIMESTAMP() FROM DUAL Error at Command Line : 1 Column : 23 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 LOCALTIMESTAMP(null)
FROM DUAL;
Hasil:
Error starting at line : 1 in command - SELECT LOCALTIMESTAMP(null) FROM DUAL Error at Command Line : 1 Column : 23 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.