MariaDB DATEDIFF() 函数使用指南

在 MariaDB 中,DATEDIFF() 是一个内置函数,它以天为单位返回两个日期之间的差值。

MariaDB DATEDIFF() 语法

这是 MariaDB DATEDIFF() 函数的语法:

DATEDIFF(date1, date2)

参数

date1
必需的。一个日期或者日期时间表达式。
date2
必需的。一个日期或者日期时间表达式。

如果您不提供参数或提供了错误数量的参数,MariaDB 将报告一个错误:ERROR 1582 (42000): Incorrect parameter count in the call to native function 'DATEDIFF'.

返回值

MariaDB DATEDIFF() 函数返回两个日期值之间的天数。DATEDIFF() 函数只比较 date1date2 的日期部分。如果 date1 的日期晚于 date2 的日期,它返回一个正数,否则返回一个负数或者 0。

如果指定的表达式不是一个合法的日期或者日期时间,DATEDIFF() 函数将返回 NULL

如果参数为 NULLDATEDIFF() 函数将返回 NULL

MariaDB DATEDIFF() 示例

简单用法

SELECT
    DATEDIFF('2022-02-28', '2022-02-28'),
    DATEDIFF('2022-02-28', '2022-02-28 10:10:10'),
    DATEDIFF('2022-02-28 10:10:10', '2022-02-28'),
    DATEDIFF('2022-02-28', '2022-02-27'),
    DATEDIFF('2022-02-28', '2022-02-27 10:10:10'),
    DATEDIFF('2022-02-28 10:10:10', '2022-02-27'),
    DATEDIFF('2022-02-30', '2022-02-28 10:10:10'),
    DATEDIFF('Not A DATEDIFF', 'Not A DATEDIFF'),
    DATEDIFF(NULL, '2022-02-28')\G

输出:

         DATEDIFF('2022-02-28', '2022-02-28'): 0
DATEDIFF('2022-02-28', '2022-02-28 10:10:10'): 0
DATEDIFF('2022-02-28 10:10:10', '2022-02-28'): 0
         DATEDIFF('2022-02-28', '2022-02-27'): 1
DATEDIFF('2022-02-28', '2022-02-27 10:10:10'): 1
DATEDIFF('2022-02-28 10:10:10', '2022-02-27'): 1
DATEDIFF('2022-02-30', '2022-02-28 10:10:10'): NULL
 DATEDIFF('Not A DATEDIFF', 'Not A DATEDIFF'): NULL
                 DATEDIFF(NULL, '2022-02-28'): NULL

获取一个日期距今的天数

SELECT DATEDIFF(NOW(), '2022-02-28');

输出:

+-------------------------------+
| DATEDIFF(NOW(), '2022-02-28') |
+-------------------------------+
|                           313 |
+-------------------------------+

这里,我们使用了 NOW() 函数获取当前的时刻。除此之外,您还可以使用 CURDATE(), CURRENT_DATE(), SYSDATE()。比如:

SELECT
    DATEDIFF(NOW(), '2022-02-28'),
    DATEDIFF(CURDATE(), '2022-02-28'),
    DATEDIFF(CURRENT_DATE(), '2022-02-28'),
    DATEDIFF(SYSDATE(), '2022-02-28')\G

输出:

         DATEDIFF(NOW(), '2022-02-28'): 313
     DATEDIFF(CURDATE(), '2022-02-28'): 313
DATEDIFF(CURRENT_DATE(), '2022-02-28'): 313
     DATEDIFF(SYSDATE(), '2022-02-28'): 313

结论

在 MariaDB 中,DATEDIFF() 是一个内置函数,它以天为单位返回两个日期之间的差值。