Di MariaDB, SYSDATE()
adalah fungsi tanggal dan waktu bawaan yang mengembalikan tanggal dan waktu saat ini.
Ini mengembalikan waktu saat fungsi dijalankan (yang bisa berbeda dengan waktu pernyataan dieksekusi).
Nilai yang dikembalikan dikembalikan dalam 'YYYY-MM-DD HH:MM:SS'
atau YYYYMMDDHHMMSS.uuuuuu
format, tergantung pada apakah fungsi tersebut digunakan dalam konteks string atau numerik.
Nilai kembalian dinyatakan dalam zona waktu saat ini.
Anda juga memiliki opsi untuk menentukan presisi mikrodetik.
Sintaks
Sintaksnya seperti ini:
SYSDATE([precision])
Dimana precision
adalah argumen opsional yang menentukan presisi mikrodetik.
Contoh
Ini contohnya:
SELECT SYSDATE();
Hasil:
+---------------------+ | SYSDATE() | +---------------------+ | 2021-05-27 08:40:41 | +---------------------+
Konteks Numerik
Ketika SYSDATE()
digunakan dalam konteks numerik, hasilnya dalam YYYYMMDDHHMMSS.uuuuuu
formatnya.
Contoh:
SELECT
SYSDATE(),
SYSDATE() + 0;
Hasil:
+---------------------+----------------+ | SYSDATE() | SYSDATE() + 0 | +---------------------+----------------+ | 2021-05-27 08:41:19 | 20210527084119 | +---------------------+----------------+
Presisi
Berikut adalah contoh untuk menentukan presisi mikrodetik:
SELECT
SYSDATE(6),
SYSDATE(6) + 0;
Hasil:
+----------------------------+-----------------------+ | SYSDATE(6) | SYSDATE(6) + 0 | +----------------------------+-----------------------+ | 2021-05-27 08:41:44.561665 | 20210527084144.562263 | +----------------------------+-----------------------+
Nilai maksimum untuk presisi mikrodetik adalah 6. Inilah yang terjadi ketika angka yang lebih tinggi dilewatkan untuk presisi:
SELECT SYSDATE(12);
Hasil:
ERROR 1426 (42000): Too big precision 12 specified for 'sysdate'. Maximum is 6
SYSDATE()
vs NOW()
Meskipun SYSDATE()
mirip dengan NOW()
fungsi, ada perbedaan.
Salah satu perbedaan utama adalah SYSDATE()
mengembalikan waktu eksekusi, sedangkan NOW()
mengembalikan waktu saat pernyataan mulai dieksekusi. Saat dijalankan dalam prosedur atau pemicu tersimpan, NOW()
akan mengembalikan waktu saat prosedur tersimpan atau pemicu mulai dijalankan.
Berikut adalah contoh yang menunjukkan perbedaan ini:
SELECT
NOW(),
SYSDATE(),
SLEEP(5),
NOW(),
SYSDATE();
Hasil (menggunakan keluaran vertikal):
NOW(): 2021-05-27 08:47:06 SYSDATE(): 2021-05-27 08:47:06 SLEEP(5): 0 NOW(): 2021-05-27 08:47:06 SYSDATE(): 2021-05-27 08:47:11
Dalam hal ini kami menggunakan SLEEP()
berfungsi untuk menjeda pemrosesan selama lima detik sebelum lot kedua panggilan fungsi.
Kita dapat melihat bahwa untuk kedua kalinya SYSDATE()
dipanggil, nilai pengembaliannya berbeda dengan yang pertama kali. NOW()
di sisi lain, mengembalikan nilai yang sama dua kali.
Ada beberapa hal lain yang harus diperhatikan saat menggunakan SYSDATE()
. Misalnya, SET TIMESTAMP
tidak mempengaruhinya (sedangkan tidak mempengaruhi NOW()
fungsi). Juga, SYSDATE()
tidak aman untuk direplikasi jika logging biner berbasis pernyataan digunakan. Namun, ada cara untuk mengatasi hal ini, jika diperlukan. Lihat dokumentasi MariaDB untuk informasi lebih lanjut.