Trong MySQL, TO_SECONDS()
hàm trả về số giây kể từ năm 0.
Không nên nhầm lẫn hàm này với TIME_TO_SECONDS()
, trả về số giây trong một giá trị thời gian nhất định được cung cấp dưới dạng đối số.
Cú pháp
Cú pháp như sau:
TO_SECONDS(expr)
Ở đâu expr
là một giá trị ngày tháng hoặc thời gian (được so sánh với năm 0).
Ví dụ 1 - Sử dụng đối số "date"
Đây là một ví dụ sử dụng đối số ngày.
SELECT TO_SECONDS('2021-09-21');
Kết quả:
+--------------------------+ | TO_SECONDS('2021-09-21') | +--------------------------+ | 63799401600 | +--------------------------+
Ví dụ 2 - Sử dụng đối số "datetime"
Đây là một ví dụ sử dụng đối số ngày giờ.
SELECT TO_SECONDS('2021-09-21 10:30:25');
Kết quả:
+-----------------------------------+ | TO_SECONDS('2021-09-21 10:30:25') | +-----------------------------------+ | 63799439425 | +-----------------------------------+
Ví dụ 3 - Sử dụng Ngày hiện tại
Trong ví dụ này, tôi chuyển CURDATE()
hoạt động như một đối số để sử dụng ngày hiện tại.
SELECT TO_SECONDS(CURDATE()) AS 'Result';
Kết quả:
+-------------+ | Result | +-------------+ | 63697968000 | +-------------+
Ví dụ 4 - Sử dụng Ngày và Giờ Hiện tại
Trong ví dụ này, tôi chuyển NOW()
hoạt động như một đối số để sử dụng ngày và giờ hiện tại.
SELECT TO_SECONDS(NOW()) AS 'Result';
Kết quả:
+-------------+ | Result | +-------------+ | 63698002698 | +-------------+
Năm hai chữ số
MySQL có các quy tắc đặc biệt để xử lý các ngày có năm hai chữ số. Năm có hai chữ số là không rõ ràng vì thế kỷ là không xác định. Về cơ bản, các quy tắc sau được áp dụng:
- Giá trị năm trong phạm vi
00-69
được chuyển đổi thành2000-2069
. - Giá trị năm trong phạm vi
70-99
được chuyển đổi thành1970-1999
.
Để có lời giải thích đầy đủ, hãy xem tài liệu MySQL về cách MySQL xử lý các năm hai chữ số.
Dưới đây là một ví dụ để chứng minh:
SELECT TO_SECONDS('69-10-07') AS '69 (2069)', TO_SECONDS('70-10-07') AS '70 (1970)';
Kết quả:
+-------------+-------------+ | 69 (2069) | 70 (1970) | +-------------+-------------+ | 65315548800 | 62191324800 | +-------------+-------------+
Ngày viết tắt
Bạn cũng có thể sử dụng ngày tháng viết tắt. Dưới đây là một ví dụ sử dụng các giá trị ngày trước ở dạng viết tắt.
SELECT TO_SECONDS('691007') AS '69 (2069)', TO_SECONDS('701007') AS '70 (1970)';
Kết quả:
+-------------+-------------+ | 69 (2069) | 70 (1970) | +-------------+-------------+ | 65315548800 | 62191324800 | +-------------+-------------+
Các ngày trước đó
Tài liệu MySQL cảnh báo rằng TO_SECONDS()
chức năng:
không nhằm mục đích sử dụng với các giá trị trước khi lịch Gregorian ra đời (1582), vì nó không tính đến những ngày đã mất khi lịch được thay đổi. Đối với các ngày trước năm 1582 (và có thể một năm sau ở các ngôn ngữ khác), kết quả từ hàm này không đáng tin cậy.