Bạn có thể sử dụng TIMEDIFF()
và TIME_TO_SEC()
các chức năng như sau:
SELECT TIME_TO_SEC(TIMEDIFF('2010-08-20 12:01:00', '2010-08-20 12:00:00')) diff;
+------+
| diff |
+------+
| 60 |
+------+
1 row in set (0.00 sec)
Bạn cũng có thể sử dụng UNIX_TIMESTAMP()
hoạt động như @ Amber đề xuất
trong một câu trả lời khác:
SELECT UNIX_TIMESTAMP('2010-08-20 12:01:00') -
UNIX_TIMESTAMP('2010-08-20 12:00:00') diff;
+------+
| diff |
+------+
| 60 |
+------+
1 row in set (0.00 sec)
Nếu bạn đang sử dụng TIMESTAMP loại dữ liệu, tôi đoán rằng UNIX_TIMESTAMP() giải pháp sẽ nhanh hơn một chút, vì TIMESTAMP các giá trị đã được lưu trữ dưới dạng số nguyên đại diện cho số giây kể từ kỷ nguyên ( Nguồn
). Trích dẫn tài liệu :
Khi
UNIX_TIMESTAMP()được sử dụng trênTIMESTAMP, hàm trả về giá trị dấu thời gian bên trong trực tiếp, không có chuyển đổi “chuỗi-thành-Unix-dấu thời gian” ngầm định.Hãy nhớ rằng
TIMEDIFF()kiểu dữ liệu trả về củaTIME.TIMEgiá trị có thể nằm trong khoảng từ '-838:59:59' đến '838:59:59' (khoảng 34,96 ngày)