MySQL TIMEDIFF()
hàm trả về sự khác biệt giữa hai giá trị thời gian hoặc ngày giờ.
Cách hoạt động của nó là bạn cung cấp hai giá trị để so sánh và TIMEDIFF()
trừ giá trị thứ hai cho giá trị đầu tiên, sau đó trả về kết quả dưới dạng giá trị thời gian.
Cú pháp
Cú pháp như sau:
TIMEDIFF(expr1,expr2)
Trong đó expr1
và expr2
là hai giá trị để so sánh. Giá trị trả về là expr2
được trừ từ expr1
.
Ví dụ cơ bản
Đây là một ví dụ để chứng minh.
SELECT TIMEDIFF('11:35:25', '10:35:25');
Kết quả:
+----------------------------------+ | TIMEDIFF('11:35:25', '10:35:25') | +----------------------------------+ | 01:00:00 | +----------------------------------+
Thời gian đã trôi qua
Giá trị thời gian có thể thể hiện thời gian đã trôi qua, vì vậy nó không bị giới hạn dưới 24 giờ.
SELECT TIMEDIFF('500:35:25', '10:35:25');
Kết quả:
+-----------------------------------+ | TIMEDIFF('500:35:25', '10:35:25') | +-----------------------------------+ | 490:00:00 | +-----------------------------------+
Chênh lệch thời gian âm
Nếu giá trị thứ hai lớn hơn giá trị đầu tiên, bạn sẽ nhận được giá trị âm cho chênh lệch thời gian. Điều này hoàn toàn hợp lệ.
SELECT TIMEDIFF('10:35:25', '500:35:25');
Kết quả:
+-----------------------------------+ | TIMEDIFF('10:35:25', '500:35:25') | +-----------------------------------+ | -490:00:00 | +-----------------------------------+
Giá trị ngày giờ
Dưới đây là một ví dụ sử dụng giá trị ngày giờ làm đối số.
SELECT TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25');
Kết quả:
+--------------------------------------------------------+ | TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25') | +--------------------------------------------------------+ | 744:00:00 | +--------------------------------------------------------+
Lưu ý rằng cả hai đối số phải cùng loại. Vì vậy, bạn không thể có giá trị thời gian cho giá trị đầu tiên và giá trị ngày giờ cho thứ hai (và ngược lại).
Cũng xin lưu ý rằng loại dữ liệu thời gian chỉ có thể nằm trong phạm vi -838:59:59 thành 838:59:59 . Do đó, những điều sau đây không hoạt động:
SELECT TIMEDIFF('2000-01-01 10:35:25', '2021-01-01 10:35:25');
Kết quả:
+--------------------------------------------------------+ | TIMEDIFF('2000-01-01 10:35:25', '2021-01-01 10:35:25') | +--------------------------------------------------------+ | -838:59:59 | +--------------------------------------------------------+ 1 row in set, 1 warning (0.00 sec)
Trong trường hợp này, chúng tôi nhận được một kết quả không chính xác và một cảnh báo.