MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

Cách TIMEDIFF () hoạt động trong MariaDB

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'

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các phương pháp hay nhất trong cơ sở dữ liệu chia tỷ lệ:Phần thứ hai

  2. Cách TIMESTAMPADD () hoạt động trong MariaDB

  3. Cách tự động hóa cụm Galera bằng ClusterControl CLI

  4. HIỂN THỊ BẢNG BIỂU trong MariaDB

  5. 4 chức năng để trả lại năm từ một ngày trong MariaDB