Bạn có thể sử dụng hàm tích hợp sẵn UNIX_TIMESTAMP () từ MySQL để lấy dấu thời gian và sự khác biệt giữa hai dấu thời gian. Cú pháp như sau -
SELECT UNIX_TIMESTAMP(yourColumnName1) - UNIX_TIMESTAMP(yourColumnName2) as anyVariableName from yourTableName;
Để hiểu khái niệm trên, chúng ta hãy tạo một bảng. Sau đây là truy vấn để tạo bảng -
mysql> create table DifferenceInSeconds −> ( −> FirstTimestamp TIMESTAMP, −> SecondTimestamp TIMESTAMP −> ); Query OK, 0 rows affected (0.93 sec)
Chèn một số bản ghi trong bảng bằng lệnh chèn. Truy vấn như sau -
mysql> insert into DifferenceInSeconds values('2012-12-12 13:16:55','2012-12-12 13:13:55'); Query OK, 1 row affected (0.31 sec) mysql> insert into DifferenceInSeconds values('2014-10-11 12:15:50','2014-10-11 12:13:50'); Query OK, 1 row affected (0.19 sec) mysql> insert into DifferenceInSeconds values('2018-12-14 13:30:53','2018-12-14 13:27:53'); Query OK, 1 row affected (0.21 sec)
Bây giờ hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau -
mysql> select *from DifferenceInSeconds;
Sau đây là kết quả -
+---------------------+---------------------+ | FirstTimestamp | SecondTimestamp | +---------------------+---------------------+ | 2012-12-12 13:16:55 | 2012-12-12 13:13:55 | | 2014-10-11 12:15:50 | 2014-10-11 12:13:50 | | 2018-12-14 13:30:53 | 2018-12-14 13:27:53 | +---------------------+---------------------+ 3 rows in set (0.00 sec)
Đây là truy vấn để tìm sự khác biệt giữa hai dấu thời gian tính bằng giây. Truy vấn như sau -
mysql> SELECT UNIX_TIMESTAMP(FirstTimestamp) - UNIX_TIMESTAMP(SecondTimestamp) as Seconds from DifferenceInSeconds;
Sau đây là kết quả -
+---------+ | Seconds | +---------+ | 180 | | 120 | | 180 | +---------+ 3 rows in set (0.00 sec)
Lưu ý - Nếu bạn không biết dấu thời gian nào lớn hơn thì hãy sử dụng ABS ().
Cú pháp như sau -
SELECT ABS(UNIX_TIMESTAMP(yourColumnName1) - UNIX_TIMESTAMP(yourColumnName2)) as Seconds from DifferenceInSeconds;
Để kiểm tra cú pháp trên, hãy để chúng tôi chèn bản ghi mà dấu thời gian đầu tiên có giá trị thấp hơn.
mysql> insert into DifferenceInSeconds values('2018-12-14 13:26:53','2018-12-14 13:31:53'); Query OK, 1 row affected (0.21 sec)
Truy vấn để hiển thị tất cả các bản ghi từ bảng.
mysql> select *from DifferenceInSeconds;
Sau đây là kết quả -
+---------------------+---------------------+ | FirstTimestamp | SecondTimestamp | +---------------------+---------------------+ | 2012-12-12 13:16:55 | 2012-12-12 13:13:55 | | 2014-10-11 12:15:50 | 2014-10-11 12:13:50 | | 2018-12-14 13:30:53 | 2018-12-14 13:27:53 | | 2018-12-14 13:26:53 | 2018-12-14 13:31:53 | +---------------------+---------------------+ 4 rows in set (0.00 sec)
Sau đây là cách sử dụng hàm ABS (). Truy vấn như sau -
mysql> SELECT ABS(UNIX_TIMESTAMP(FirstTimestamp) - UNIX_TIMESTAMP(SecondTimestamp)) as Seconds from DifferenceInSeconds;
Sau đây là kết quả -
+---------+ | Seconds | +---------+ | 180 | | 120 | | 180 | | 300 | +---------+ 4 rows in set (0.00 sec)
Lưu ý - Nếu bạn không sử dụng ABS () thì -300 giây sẽ là giá trị đầu ra ở trên.