MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

Cách SYSDATE () hoạt động trong MariaDB

Trong MariaDB, SYSDATE() là một hàm ngày và giờ được tích hợp sẵn trả về ngày và giờ hiện tại.

Nó trả về thời gian mà hàm được thực thi (có thể khác với thời gian mà câu lệnh được thực thi).

Giá trị trả về được trả lại trong 'YYYY-MM-DD HH:MM:SS' hoặc YYYYMMDDHHMMSS.uuuuuu định dạng, tùy thuộc vào việc hàm được sử dụng trong ngữ cảnh chuỗi hay số.

Giá trị trả về được biểu thị theo múi giờ hiện tại.

Bạn cũng có tùy chọn chỉ định độ chính xác micro giây.

Cú pháp

Cú pháp như sau:

SYSDATE([precision])

Trong đó precision là một đối số tùy chọn chỉ định độ chính xác micro giây.

Ví dụ

Đây là một ví dụ:

SELECT SYSDATE();

Kết quả:

+---------------------+
| SYSDATE()           |
+---------------------+
| 2021-05-27 08:40:41 |
+---------------------+

Ngữ cảnh dạng số

Khi SYSDATE() được sử dụng trong ngữ cảnh số, kết quả là YYYYMMDDHHMMSS.uuuuuu định dạng.

Ví dụ:

SELECT
    SYSDATE(),
    SYSDATE() + 0;

Kết quả:

+---------------------+----------------+
| SYSDATE()           | SYSDATE() + 0  |
+---------------------+----------------+
| 2021-05-27 08:41:19 | 20210527084119 |
+---------------------+----------------+

Độ chính xác

Dưới đây là một ví dụ về việc chỉ định độ chính xác micro giây:

SELECT
    SYSDATE(6),
    SYSDATE(6) + 0;

Kết quả:

+----------------------------+-----------------------+
| SYSDATE(6)                 | SYSDATE(6) + 0        |
+----------------------------+-----------------------+
| 2021-05-27 08:41:44.561665 | 20210527084144.562263 |
+----------------------------+-----------------------+

Giá trị tối đa cho độ chính xác micro giây là 6. Đây là điều xảy ra khi một số cao hơn được chuyển cho độ chính xác:

SELECT SYSDATE(12);

Kết quả:

ERROR 1426 (42000): Too big precision 12 specified for 'sysdate'. Maximum is 6

SYSDATE() so với NOW()

Mặc dù SYSDATE() tương tự với NOW() chức năng, có sự khác biệt.

Một trong những điểm khác biệt chính là SYSDATE() trả về thời gian mà nó thực thi, trong khi NOW() trả về thời gian mà câu lệnh bắt đầu thực thi. Khi chạy trong một quy trình hoặc trình kích hoạt được lưu trữ, NOW() sẽ trả về thời gian mà thủ tục được lưu trữ hoặc trình kích hoạt bắt đầu thực thi.

Dưới đây là một ví dụ minh chứng cho sự khác biệt này:

SELECT 
    NOW(),
    SYSDATE(),
    SLEEP(5),
    NOW(),
    SYSDATE();

Kết quả (sử dụng đầu ra dọc):

    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

Trong trường hợp này, chúng tôi đã sử dụng SLEEP() chức năng tạm dừng xử lý trong năm giây trước khi nhiều chức năng thứ hai gọi.

Chúng ta có thể thấy rằng SYSDATE() lần thứ hai đã được gọi, giá trị trả về của nó khác với lần đầu tiên. NOW() mặt khác, trả về cùng một giá trị cả hai lần.

Có một số điều khác cần lưu ý khi sử dụng SYSDATE() . Ví dụ:SET TIMESTAMP không ảnh hưởng đến nó (trong khi nó không ảnh hưởng đến NOW() hàm số). Ngoài ra, SYSDATE() không an toàn để sao chép nếu sử dụng ghi nhật ký nhị phân dựa trên câu lệnh. Tuy nhiên, có nhiều cách để đối phó với điều này, nếu cần thiết. Xem tài liệu MariaDB để biết thêm thông tin.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách hoạt động của MATCH AGAINST trong MariaDB

  2. MariaDB JSON_OBJECT () Giải thích

  3. Làm thế nào Performant là ProxySQL Node của bạn?

  4. Bắt đầu với MariaDB bằng Docker, Java Spring và JDBC

  5. Cách thiết lập sao chép không đồng bộ giữa các cụm MariaDB Galera