Chỉnh sửa: Bạn đang sử dụng phiên bản MySQL nào? Nó hoạt động tốt trên 5.0.22 ít nhất. Tôi vừa chạy truy vấn này. xem tại đây
mysql> SELECT TIME_TO_SEC(TIMEDIFF('2000:01:01 00:00:00', '2001:01:01 00:00:00'));
+---------------------------------------------------------------------+
| TIME_TO_SEC(TIMEDIFF('2000:01:01 00:00:00', '2001:01:01 00:00:00')) |
+---------------------------------------------------------------------+
| -31622400 |
+---------------------------------------------------------------------+
1 row in set (0.00 sec)
Bạn có xem ở đây không ? Đó có thể là vấn đề cắt ngắn bởi vì Phạm vi thời gian nhỏ hơn nhiều so với chênh lệch ngày mà bạn có.
Câu trả lời ban đầu
Sử dụng cái này
SELECT TIMESTAMPDIFF(SECOND,'2000:01:01 00:00:00', '2001:01:01 00:00:00');
+--------------------------------------------------------------------+
| TIMESTAMPDIFF(SECOND,'2000:01:01 00:00:00', '2001:01:01 00:00:00') |
+--------------------------------------------------------------------+
| 31622400 |
+--------------------------------------------------------------------+
Vấn đề là bạn đang cố chuyển đổi thời gian âm thành thời gian trong giây. Việc hoán đổi các biến sẽ thực hiện công việc.
SELECT TIME_TO_SEC(TIMEDIFF('2001:01:01 00:00:00','2000:01:01 00:00:00'));
+--------------------------------------------------------------------+
| TIME_TO_SEC(TIMEDIFF('2001:01:01 00:00:00','2000:01:01 00:00:00')) |
+--------------------------------------------------------------------+
| 31622400 |
+--------------------------------------------------------------------+