Trong MariaDB, TO_SECONDS()
là một hàm ngày và giờ được tích hợp sẵn để trả về số giây từ năm 0 đến biểu thức ngày tháng hoặc ngày giờ đã cho.
Cú pháp
Cú pháp như sau:
TO_SECONDS(expr)
Ở đâu expr
là một giá trị ngày tháng hoặc ngày giờ.
Ví dụ
Đây là một ví dụ:
SELECT TO_SECONDS('2020-10-30');
Kết quả:
+--------------------------+ | TO_SECONDS('2020-10-30') | +--------------------------+ | 63771235200 | +--------------------------+
Đây là với một vài giá trị thời gian khác:
SELECT
TO_SECONDS('0000-01-01'),
TO_SECONDS('1234-10-30');
Kết quả:
+--------------------------+--------------------------+ | TO_SECONDS('0000-01-01') | TO_SECONDS('1234-10-30') | +--------------------------+--------------------------+ | 86400 | 38967436800 | +--------------------------+--------------------------+
Giá trị ngày giờ
Dưới đây là một ví dụ sử dụng giá trị ngày giờ:
SELECT TO_SECONDS('2020-10-30 10:23:47');
Kết quả:
+-----------------------------------+ | TO_SECONDS('2020-10-30 10:23:47') | +-----------------------------------+ | 63771272627 | +-----------------------------------+
Micro giây
TO_SECONDS()
bỏ qua micro giây:
SELECT TO_SECONDS('2020-10-30 10:23:47.999999');
Kết quả:
+------------------------------------------+ | TO_SECONDS('2020-10-30 10:23:47.999999') | +------------------------------------------+ | 63771272627 | +------------------------------------------+
Số ngày
Số ngày tháng được hỗ trợ:
SELECT TO_SECONDS(20201030);
Kết quả:
+----------------------+ | TO_SECONDS(20201030) | +----------------------+ | 63771235200 | +----------------------+
Ngày / Giờ hiện tại
Đây là một ví dụ sử dụng NOW()
để trả về số giây dựa trên ngày và giờ hiện tại:
SELECT
NOW(),
TO_SECONDS(NOW());
Kết quả:
+---------------------+-------------------+ | NOW() | TO_SECONDS(NOW()) | +---------------------+-------------------+ | 2021-05-31 09:34:16 | 63789672856 | +---------------------+-------------------+
Tuy nhiên, nếu chúng ta sử dụng CURDATE()
, chúng tôi sẽ nhận được một kết quả khác (bởi vì CURDATE()
trả về giá trị ngày tháng, trong khi NOW()
trả về giá trị ngày giờ).
SELECT
NOW(),
TO_SECONDS(NOW()),
CURDATE(),
TO_SECONDS(CURDATE());
Kết quả (sử dụng đầu ra dọc):
NOW(): 2021-05-31 09:35:01 TO_SECONDS(NOW()): 63789672901 CURDATE(): 2021-05-31 TO_SECONDS(CURDATE()): 63789638400
Đối số không hợp lệ
Khi được truyền bất kỳ đối số không hợp lệ nào, TO_SECONDS()
trả về null
với một cảnh báo:
SELECT TO_SECONDS('Homer');
Kết quả:
+---------------------+ | TO_SECONDS('Homer') | +---------------------+ | NULL | +---------------------+ 1 row in set, 1 warning (0.000 sec)
Kiểm tra cảnh báo:
SHOW WARNINGS;
Kết quả:
+---------+------+-------------------------------+ | Level | Code | Message | +---------+------+-------------------------------+ | Warning | 1292 | Incorrect time value: 'Homer' | +---------+------+-------------------------------+
Thiếu đối số
Đang gọi TO_SECONDS()
với số lượng đối số sai hoặc không chuyển bất kỳ đối số nào, dẫn đến lỗi:
SELECT TO_SECONDS();
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_SECONDS'
Và một ví dụ khác:
SELECT TO_SECONDS('2020-10-08', '10:09:10');
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_SECONDS'