Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

SYSDATE() vs NOW() di MySQL:Apa Bedanya?

Saat mengembalikan tanggal/waktu saat ini di MySQL, ada berbagai fungsi yang dapat Anda pilih. Sebagian besar hanyalah sinonim untuk fungsi lain.

Namun, ada dua fungsi yang tampaknya melakukan hal yang sama, tetapi sebenarnya sedikit berbeda. Fungsi yang saya maksud adalah SYSDATE() dan NOW() .

Perbedaan Antara SYSDATE() dan NOW()

Kedua fungsi mengembalikan tanggal dan waktu saat ini. Namun, di sinilah perbedaannya:

  • SYSDATE() mengembalikan waktu eksekusinya.
  • NOW() mengembalikan waktu konstan yang menunjukkan waktu di mana pernyataan mulai dieksekusi.
  • SET TIMESTAMP pernyataan mempengaruhi nilai yang dikembalikan oleh NOW() tetapi tidak dengan SYSDATE() .

Jadi dalam banyak kasus, Anda mungkin akan mendapatkan hasil yang sama terlepas dari fungsi mana yang Anda gunakan. Namun, jika pernyataan Anda lebih kompleks dan membutuhkan waktu untuk dijalankan, Anda bisa mendapatkan perbedaan yang cukup besar dalam nilai kembalian tergantung pada fungsi yang Anda gunakan.

Contoh

Berikut adalah contoh untuk menunjukkan bagaimana nilai yang dikembalikan dapat bervariasi, bergantung pada fungsi yang Anda gunakan.

SELECT
    SYSDATE(), SLEEP(10) AS '', SYSDATE(),
    NOW(), SLEEP(10) AS '', NOW();

Hasil:

+---------------------+---+---------------------+---------------------+---+---------------------+
| SYSDATE()           |   | SYSDATE()           | NOW()               |   | NOW()               |
+---------------------+---+---------------------+---------------------+---+---------------------+
| 2018-06-23 11:55:26 | 0 | 2018-06-23 11:55:36 | 2018-06-23 11:55:26 | 0 | 2018-06-23 11:55:26 |
+---------------------+---+---------------------+---------------------+---+---------------------+

Jadi dalam contoh ini, saya menjalankan SYSDATE() dua kali, tetapi dengan jeda 10 detik di antaranya. Saya kemudian melakukan hal yang sama dengan NOW() .

Seperti yang diharapkan, jeda 10 detik memengaruhi nilai kembalian SYSDATE() . kedua tapi bukan NOW() second yang kedua . Faktanya, nilai untuk kedua instance NOW() sama dengan contoh pertama SYSDATE() , saat itulah pernyataan mulai berjalan.

Menjadikan SYSDATE() sebagai Alias ​​​​untuk SEKARANG()

Jika perbedaan antara kedua fungsi ini menyebabkan Anda bermasalah, Anda sebenarnya memiliki opsi untuk membuat SYSDATE() alias untuk NOW() .

Untuk melakukannya, gunakan --sysdate-is-now opsi perintah server. Untuk informasi lebih lanjut, lihat –sysdate-is-now di situs web dokumentasi MySQL.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan terkait dengan only_full_group_by saat menjalankan kueri di MySql

  2. BATAS kata kunci di MySQL dengan pernyataan yang disiapkan

  3. Bisakah kolom tabel dengan Kunci Asing menjadi NULL?

  4. Gunakan mysqldump untuk Mencadangkan MySQL atau MariaDB

  5. SQL Query Untuk Membuat Tabel Di MySQL