MySQL DATEDIFF() 函数使用指南

MySQL DATEDIFF() 函数返回两个日期值之间的天数。

DATEDIFF() 语法

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

DATEDIFF(date1, date2)

参数

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

返回值

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

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

如果参数为 NULL,DATEDIFF() 函数将返回 NULL。

DATEDIFF() 示例

这里是几个 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') |
+-------------------------------+
|                            44 |
+-------------------------------+

这里,我们使用了 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'): 44
     DATEDIFF(CURDATE(), '2022-02-28'): 44
DATEDIFF(CURRENT_DATE(), '2022-02-28'): 44
     DATEDIFF(SYSDATE(), '2022-02-28'): 44