Di MariaDB, SYSDATE()
dan NOW()
fungsi serupa karena mengembalikan tanggal dan waktu saat ini.
Namun, ada perbedaan penting:SYSDATE()
mengembalikan waktu eksekusi, sedangkan NOW()
mengembalikan waktu saat pernyataan mulai dieksekusi.
Dan ketika dijalankan dalam prosedur atau pemicu tersimpan, SYSDATE()
akan mengembalikan waktu yang dijalankannya, sedangkan NOW()
akan mengembalikan waktu saat prosedur tersimpan atau pemicu mulai dijalankan.
Contoh
Pertama, mari kita lihat bagaimana kedua fungsi ini dapat menghasilkan hasil yang berbeda.
SELECT
NOW(),
SYSDATE(),
SLEEP(5),
NOW(),
SYSDATE();
Hasil (menggunakan keluaran vertikal):
NOW(): 2021-05-27 09:22:08 SYSDATE(): 2021-05-27 09:22:08 SLEEP(5): 0 NOW(): 2021-05-27 09:22:08 SYSDATE(): 2021-05-27 09:22:13
Di sini, 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.
Pertimbangan Lain
Ada beberapa hal lain yang perlu diperhatikan dengan dua fungsi ini:
SET TIMESTAMP
tidak mempengaruhiSYSDATE()
, sedangkan tidak mempengaruhiNOW()
fungsi.SYSDATE()
tidak aman untuk direplikasi jika logging biner berbasis pernyataan digunakan. Namun, ada cara untuk mengatasi hal ini, jika diperlukan. Anda dapat menggunakan--sysdate-is-now
perintah adalah opsi non-default untuk aliasSYSDATE()
keNOW()
agar aman untuk direplikasi. Lihat dokumentasi MariaDB untukSYSDATE()
untuk informasi lebih lanjut.