Fungsi NOW() MySQL Dijelaskan: Sintaks, Contoh, dan Perbedaan dengan SYSDATE()

1. Gambaran Umum Fungsi MySQL NOW()

Fungsi MySQL NOW() digunakan untuk dengan mudah mengambil tanggal dan waktu saat ini dalam sebuah basis data. Dengan memanfaatkan fungsi NOW(), Anda dapat memperoleh cap waktu saat memasukkan data atau mengambil informasi waktu yang berguna untuk keperluan pencatatan. Meskipun sederhana, ini adalah alat yang sangat kuat dan banyak digunakan.

Sintaks Dasar Fungsi NOW()

Sintaks fungsi NOW() sangat sederhana. Anda dapat mengambil tanggal dan waktu saat ini dengan kueri berikut.

SELECT NOW();

Hasil eksekusi dikembalikan dalam format YYYY-MM-DD HH:MM:SS. Misalnya, jika tanggal dan waktu adalah 24 Oktober 2024 pukul 16:30, hasilnya akan seperti berikut.

2024-10-24 16:30:00

Fungsi NOW() mengembalikan tanggal dan waktu saat ini berdasarkan zona waktu basis data. Hal ini memungkinkan manajemen waktu yang konsisten di seluruh sistem.

Kasus Penggunaan Umum untuk Fungsi NOW()

Fungsi NOW() sangat berguna dalam situasi berikut.

  • Logging : Mencatat secara otomatis waktu ketika data diubah atau dimasukkan.
  • Timestamps : Digunakan untuk merekam waktu tindakan pengguna.
  • Time-dependent filtering : Menyaring data yang terjadi dalam periode tertentu.

2. Contoh Penggunaan Dasar Fungsi NOW()

Mari kita lihat contoh dasar mengambil tanggal dan waktu saat ini menggunakan fungsi NOW().

SELECT NOW();

Kueri ini mengembalikan tanggal dan waktu saat ini. Selain mengambilnya sebagai string, Anda juga dapat memperoleh dalam format numerik. Dengan menggunakan kueri berikut, tanggal dan waktu saat ini dikembalikan dalam format numerik (YYYYMMDDHHMMSS).

SELECT NOW() + 0;

Misalnya, hasilnya dapat dikembalikan sebagai “20241024163000”, yang memudahkan penanganan nilai secara numerik.

Menentukan Presisi Detik Pecahan

Fungsi NOW() memungkinkan Anda menentukan presisi detik pecahan. Anda dapat mengatur presisi menggunakan argumen seperti di bawah ini.

SELECT NOW(3);

Kueri ini mengembalikan hasil dengan presisi milidetik (tiga digit setelah titik desimal). Misalnya, dapat mengembalikan nilai seperti “2024-10-24 16:30:00.123”. Fitur ini sangat berguna dalam sistem yang memerlukan presisi tingkat detik.

3. Perbedaan Antara SYSDATE() dan NOW()

Ada fungsi yang mirip dengan NOW() yang disebut SYSDATE(), tetapi keduanya berperilaku sedikit berbeda.

  • NOW() : Mengambil waktu pada saat mulai eksekusi kueri dan mempertahankan nilai yang sama sepanjang pernyataan. Bahkan jika transaksi berjalan lama, ia mengembalikan hasil yang sama.
  • SYSDATE() : Mengambil waktu saat ini pada setiap langkah kueri. Dengan kata lain, bahkan selama transaksi yang berjalan lama, ia mengembalikan waktu nyata saat ini.

Misalnya, dalam proses batch yang berjalan lama, SYSDATE() dapat memberikan hasil waktu nyata yang lebih akurat. Namun, ketika konsistensi transaksi penting, NOW() umumnya direkomendasikan.

Contoh Menunjukkan Perbedaan dalam Kueri

Kueri berikut menunjukkan perbedaan perilaku antara SYSDATE() dan NOW().

SELECT NOW(), SYSDATE();

Hasilnya mungkin terlihat seperti ini.

NOW():     2024-10-24 16:30:00
SYSDATE(): 2024-10-24 16:30:01

Perbedaan waktu pada saat kueri dieksekusi tercermin dalam SYSDATE(), sedangkan NOW() mempertahankan waktu saat eksekusi kueri dimulai. Meskipun perbedaannya halus, penting untuk memilih fungsi yang tepat tergantung pada kasus penggunaan.

4. Aplikasi Praktis Fungsi NOW()

Fungsi NOW() sangat berguna dalam skenario tertentu. Misalnya, jika Anda ingin secara otomatis mencatat tanggal dan waktu saat data dimasukkan, Anda dapat menggunakan fungsi NOW() seperti di bawah ini.

INSERT INTO users (username, created_at) 
VALUES ('example_user', NOW());

Ini secara otomatis mencatat waktu saat ini di kolom created_at ketika catatan dimasukkan. Fitur ini sangat berguna untuk pencatatan log dan pelacakan peristiwa.

Selain itu, jika Anda ingin mengambil data yang dibuat dalam tujuh hari terakhir, Anda dapat menggunakan fungsi NOW() sebagai berikut.

SELECT * FROM orders
WHERE order_date >= NOW() - INTERVAL 7 DAY;

Kueri ini mengambil semua catatan yang dibuat dalam tujuh hari terakhir dari tanggal dan waktu saat ini. Fungsi NOW() sangat efektif untuk ekstraksi data yang bergantung pada waktu.

5. Pertimbangan Penting Saat Menggunakan Fungsi NOW()

Ada beberapa poin penting yang perlu dipertimbangkan saat menggunakan fungsi NOW(). Khususnya, fungsi ini dapat memengaruhi konsistensi transaksi, sehingga penting untuk menggunakannya secara tepat tergantung pada konteks.

  • Perilaku Dalam Transaksi : Fungsi NOW() mengembalikan hasil yang konsisten dalam sebuah transaksi, artinya mengembalikan timestamp yang sama bahkan selama proses yang berjalan lama. Ini penting untuk menjaga konsistensi data. Namun, jika timestamp waktu nyata diperlukan, menggunakan SYSDATE() lebih tepat.

Selain itu, karena fungsi NOW() bergantung pada pengaturan zona waktu, ia dapat menghasilkan hasil yang berbeda tergantung pada konfigurasi sistem. Dalam aplikasi global, penting untuk merancang dengan mempertimbangkan zona waktu.