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
.TIME
giá trị có thể nằm trong khoảng từ '-838:59:59' đến '838:59:59' (khoảng 34,96 ngày)