MySQL DATEDIFF() 函数

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

DATEDIFF() 语法

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

DATEDIFF(date1, date2)

参数

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

返回值

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

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

如果参数为 NULLDATEDIFF() 函数将返回 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