Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tính khoảng cách giữa hai giá trị datetime bằng TIMESTAMPDIFF trong MySQL

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:

Khác với DATEDIFF: DATEDIFF(date1, date2) chỉ tính ngày (bỏ qua giờ), trả về date1 - date2. TIMESTAMPDIFF chính xác đến đơn vị yêu cầu.

UnitÝ nghĩa
MICROSECONDMicro giây
SECONDGiây
MINUTEPhút
HOURGiờ
DAYNgày
WEEKTuần
MONTHTháng
QUARTERQuý
YEARNăm