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

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

Trong MariaDB, TIMESTAMPDIFF() 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 biểu thức ngày tháng hoặc ngày giờ.

Cú pháp

Cú pháp như sau:

TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)

Đơn vị unit là một trong các giá trị sau:

  • MICROSECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • QUARTER
  • YEAR

Các đơn vị có thể tùy chọn có tiền tố là SQL_TSI_ .

TIMESTAMPDIFF() trả về datetime_expr2 - datetime_expr1 .

Một biểu thức có thể là ngày tháng và biểu thức kia là ngày giờ. Giá trị ngày được coi là có một phần thời gian của 00:00:00 khi cần thiết.

Ví dụ

Dưới đây là một ví dụ để chứng minh:

SELECT TIMESTAMPDIFF(DAY, '2030-02-01', '2030-03-01');

Kết quả:

+------------------------------------------------+
| TIMESTAMPDIFF(DAY, '2030-02-01', '2030-03-01') |
+------------------------------------------------+
|                                             28 |
+------------------------------------------------+

Kết quả phủ định

Việc chuyển đổi ngày tháng sẽ dẫn đến kết quả tiêu cực:

SELECT TIMESTAMPDIFF(DAY, '2030-03-01', '2030-02-01');

Kết quả:

+------------------------------------------------+
| TIMESTAMPDIFF(DAY, '2030-03-01', '2030-02-01') |
+------------------------------------------------+
|                                            -28 |
+------------------------------------------------+

Giá trị ngày giờ

Dưới đây là một ví dụ về việc chuyển một giá trị ngày giờ:

SELECT TIMESTAMPDIFF(
    HOUR, 
    '2030-02-01 00:00:00', 
    '2030-02-01 12:30:45'
    ) 
AS Result;

Kết quả:

+--------+
| Result |
+--------+
|     12 |
+--------+

Tôi đã chỉ định HOUR và do đó nó bỏ qua phần phút và giây.

Loại hỗn hợp

Dưới đây là một ví dụ về việc chuyển cả ngày tháng và giá trị ngày giờ:

SELECT TIMESTAMPDIFF(
    HOUR, 
    '2030-02-01', 
    '2030-02-01 12:30:45'
    ) 
AS Result;

Kết quả:

+--------+
| Result |
+--------+
|     12 |
+--------+

Như đã đề cập, các giá trị ngày được coi là có một phần thời gian của 00:00:00 .

Thêm SQL_TSI_ Tiền tố

Đơn vị có thể bao gồm một SQL_TSI_ tiền tố nếu được yêu cầu:

SELECT TIMESTAMPDIFF(
    SQL_TSI_YEAR, 
    '2030-02-01', 
    '2035-02-01'
    )
AS Result;

Kết quả:

+--------+
| Result |
+--------+
|      5 |
+--------+

Micro giây

Dưới đây là một ví dụ trả về micro giây:

SELECT TIMESTAMPDIFF(
    MICROSECOND, 
    '2030-02-01 10:30:45.000000',
    '2030-02-01 10:30:45.123456'
    )
AS Result;

Kết quả:

+--------+
| Result |
+--------+
| 123456 |
+--------+

Đây là một trong những nơi mà micro giây không thực sự được chỉ định trong các giá trị ngày giờ:

SELECT TIMESTAMPDIFF(
    MICROSECOND, 
    '2030-02-01 10:30:45',
    '2030-02-01 12:30:45'
    )
AS Result;

Kết quả:

+------------+
| Result     |
+------------+
| 7200000000 |
+------------+

Ngày hiện tại

Chúng ta có thể chuyển NOW() một trong các đối số datetime để so sánh ngày và giờ hiện tại với một ngày khác:

SELECT 
    NOW(),
    TIMESTAMPDIFF(DAY, NOW(), '2021-03-31') AS Diff;

Kết quả:

+---------------------+------+
| NOW()               | Diff |
+---------------------+------+
| 2021-05-30 09:29:01 |  -60 |
+---------------------+------+

Ngày trống

Nếu một trong các ngày null , kết quả là null :

SELECT TIMESTAMPDIFF(
    YEAR, 
    '2030-02-01',
    NULL
    )
AS Result;

Kết quả:

+--------+
| Result |
+--------+
|   NULL |
+--------+

Thiếu đối số

Gọi TIMESTAMPDIFF() với 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 TIMESTAMPDIFF();

Kết quả:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

Và một ví dụ khác:

SELECT TIMESTAMPDIFF('2020-12-09');

Kết quả:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '10, '2020-12-09')' at line 1

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Di chuyển Amazon RDS (MySQL hoặc MariaDB) sang máy chủ On-Prem

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

  3. Nhận kích thước của cơ sở dữ liệu trong MariaDB

  4. ClusterControl CMON HA cho tính khả dụng cao của cơ sở dữ liệu phân tán - Phần thứ hai (Thiết lập quyền truy cập GUI)

  5. Cách LPAD () hoạt động trong MariaDB