MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Bagaimana SYSDATE() Bekerja di MariaDB

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengatur Replikasi Asinkron Antara Cluster MySQL Galera

  2. Cara Menginstal dan Mengamankan MariaDB di CentOS 7

  3. MariaDB JSON_KEYS() Dijelaskan

  4. Cara Menyebarkan Cluster MySQL atau MariaDB Galera Siap Produksi Menggunakan ClusterControl

  5. Kinerja Driver Konektor Java MariaDB