Hàm DATEDIFF(date1, date2) trong MySQL trả về số ngày chênh lệch giữa hai ngày (date1 - date2). Kết quả dương nếu date1 sau date2, âm nếu trước, 0 nếu trùng ngày. Thường dùng để tính tuổi, ngày quá hạn, thời gian tồn kho, v.v.
Ví dụ minh họa
Tạo bảng ngày đáo hạn:
mysql> CREATE TABLE DemoTable1446 (
DueDate DATE
);
Chèn dữ liệu:
mysql> INSERT INTO DemoTable1446 VALUES ('2019-01-21');
mysql> INSERT INTO DemoTable1446 VALUES ('2019-02-01');
mysql> INSERT INTO DemoTable1446 VALUES ('2019-09-30');
Dữ liệu:
mysql> SELECT * FROM DemoTable1446;
+------------+ | DueDate | +------------+ | 2019-01-21 | | 2019-02-01 | | 2019-09-30 | +------------+
Ngày hiện tại:
mysql> SELECT CURDATE();
+------------+ | curdate() | +------------+ | 2019-10-01 | +------------+
Tính chênh lệch ngày (CURDATE - DueDate)
mysql> SELECT DATEDIFF(CURDATE(), DueDate)
FROM DemoTable1446;
Kết quả:
+-----------------------------+ | datediff(curdate(),DueDate) | +-----------------------------+ | 253 | | 242 | | 1 | +-----------------------------+
Giải thích kết quả
- 2019-10-01 - 2019-01-21 = 253 ngày
- 2019-10-01 - 2019-02-01 = 242 ngày
- 2019-10-01 - 2019-09-30 = 1 ngày
Các hàm liên quan về khoảng cách thời gian
| Hàm | Mô tả | Ví dụ |
|---|---|---|
DATEDIFF(d1, d2) | Số ngày (d1 - d2), bỏ qua phần giờ | DATEDIFF('2024-01-02', '2024-01-01') = 1 |
TIMESTAMPDIFF(unit, d1, d2) | Khoảng cách theo đơn vị (DAY, MONTH, YEAR, HOUR...) | TIMESTAMPDIFF(DAY, '2024-01-01', '2024-01-02') = 1 |
TIMEDIFF(t1, t2) | Khoảng cách TIME/DATETIME (giờ:phút:giây) | TIMEDIFF('12:00', '10:30') = '01:30:00' |
Ứng dụng thực tế