Trong MariaDB, TIMEDIFF()
là một hàm ngày và giờ được tích hợp sẵn trả về sự khác biệt giữa hai giá trị thời gian hoặc giá trị ngày giờ, được biểu thị dưới dạng giá trị thời gian.
Nó tương tự như DATEDIFF()
, ngoại trừ DATEDIFF()
đó Giá trị trả về của ‘s được biểu thị bằng ngày.
TIMEDIFF()
chấp nhận hai đối số, cả hai đều là biểu thức thời gian hoặc ngày giờ. Sau đó, nó trừ lần thứ hai với lần đầu tiên.
Cú pháp
Cú pháp như sau:
TIMEDIFF(expr1,expr2)
Sau đó, nó trả về expr1 - expr2
.
Ví dụ
Đây là một ví dụ:
SELECT TIMEDIFF('10:30:17', '1:10:10');
Kết quả:
+---------------------------------+ | TIMEDIFF('10:30:17', '1:10:10') | +---------------------------------+ | 09:20:07 | +---------------------------------+
Đây là một lần nữa, nhưng với các giá trị thời gian được hoán đổi xung quanh:
SELECT TIMEDIFF('1:10:10', '10:30:17');
Kết quả:
+---------------------------------+ | TIMEDIFF('1:10:10', '10:30:17') | +---------------------------------+ | -09:20:07 | +---------------------------------+
Giá trị ngày giờ
Dưới đây là một ví dụ sử dụng giá trị ngày giờ:
SELECT TIMEDIFF('2030-01-25 00:00:00', '2030-01-20 23:59:59');
Kết quả:
+--------------------------------------------------------+ | TIMEDIFF('2030-01-25 00:00:00', '2030-01-20 23:59:59') | +--------------------------------------------------------+ | 96:00:01 | +--------------------------------------------------------+
Các loại giá trị hỗn hợp
Trong khi TIMEDIFF()
hoạt động trên cả giá trị thời gian và ngày giờ, cả hai đối số phải cùng loại. Kết hợp các loại dẫn đến null
.
Ví dụ:
SELECT TIMEDIFF('2030-01-25 00:00:00', '23:59:59');
Kết quả:
+---------------------------------------------+ | TIMEDIFF('2030-01-25 00:00:00', '23:59:59') | +---------------------------------------------+ | NULL | +---------------------------------------------+
Ngoài phạm vi
Phạm vi cho các giá trị thời gian là '-838:59:59.999999'
thành '838:59:59.999999'
. Nếu kết quả nằm ngoài phạm vi đó, giá trị trả về là giới hạn trên của phạm vi liên quan và một cảnh báo sẽ được trả về.
Ví dụ:
SELECT TIMEDIFF('2040-01-25 00:00:00', '2030-01-25 23:59:59');
Kết quả:
+--------------------------------------------------------+ | TIMEDIFF('2040-01-25 00:00:00', '2030-01-25 23:59:59') | +--------------------------------------------------------+ | 838:59:59 | +--------------------------------------------------------+ 1 row in set, 1 warning (0.003 sec)
Hãy xem cảnh báo:
SHOW WARNINGS;
Kết quả:
+---------+------+-----------------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '87624:00:01' | +---------+------+-----------------------------------------------+
Ngày hiện tại
Tại đây, chúng tôi chuyển NOW()
như đối số thứ hai:
SELECT
NOW(),
TIMEDIFF('2021-05-27 10:00:00', NOW());
Kết quả:
+---------------------+----------------------------------------+ | NOW() | TIMEDIFF('2021-05-27 10:00:00', NOW()) | +---------------------+----------------------------------------+ | 2021-05-27 14:29:38 | -04:29:38 | +---------------------+----------------------------------------+
Đối số không hợp lệ
Khi được truyền bất kỳ đối số không hợp lệ nào, TIMEEDIFF()
trả về null
:
SELECT TIMEDIFF('Homer', 'Simpson');
Kết quả:
+------------------------------+ | TIMEDIFF('Homer', 'Simpson') | +------------------------------+ | NULL | +------------------------------+
Thiếu đối số
Gọi TIMEDIFF()
số lượng đối số sai hoặc không chuyển bất kỳ đối số nào, dẫn đến lỗi:
SELECT TIMEDIFF();
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIMEDIFF'
Và:
SELECT TIMEDIFF('2030-05-21');
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIMEDIFF'