Giới thiệu
Hàm TIMESTAMPDIFF(unit, datetime1, datetime2) trả về chênh lệch giữa hai datetime theo đơn vị chỉ định (MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR). Trả về số nguyên có dấu (datetime2 - datetime1).
1. Tạo bảng và dữ liệu
mysql> create table DemoTable (
-> DueDatetime1 datetime,
-> DueDatetime2 datetime
-> );
Query OK, 0 rows affected (0.86 sec)
mysql> insert into DemoTable values('2019-10-26 19:49:00','2019-10-26 17:49:00');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('2019-10-26 08:00:00','2019-10-26 13:00:00');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('2019-10-26 06:50:00','2019-10-26 12:50:00');
Query OK, 1 row affected (0.68 sec)
2. Dữ liệu gốc
mysql> select *from DemoTable;
+---------------------+---------------------+ | DueDatetime1 | DueDatetime2 | +---------------------+---------------------+ | 2019-10-26 19:49:00 | 2019-10-26 17:49:00 | | 2019-10-26 08:00:00 | 2019-10-26 13:00:00 | | 2019-10-26 06:50:00 | 2019-10-26 12:50:00 | +---------------------+---------------------+ 3 rows in set (0.00 sec)
3. Tính chênh lệch phút (giá trị tuyệt đối)
mysql> select abs(timestampdiff(minute, DueDatetime1, DueDatetime2)) from DemoTable;
4. Kết quả
+------------------------------------------------------+ | abs(timestampdiff(minute,DueDatetime1,DueDatetime2)) | +------------------------------------------------------+ | 120 | | 300 | | 360 | +------------------------------------------------------+ 3 rows in set (0.00 sec)
Giải thích:
- Hàng 1: 19:49 - 17:49 = 120 phút (âm → ABS = 120)
- Hàng 2: 08:00 - 13:00 = -300 → ABS = 300
- Hàng 3: 06:50 - 12:50 = -360 → ABS = 360
Các đơn vị (unit) phổ biến:
| Unit | Ý nghĩa |
|---|---|
| MICROSECOND | Micro giây |
| SECOND | Giây |
| MINUTE | Phút |
| HOUR | Giờ |
| DAY | Ngày |
| WEEK | Tuần |
| MONTH | Tháng |
| QUARTER | Quý |
| YEAR | Năm |