DATEDIFF
描述
DATEDIFF 函数用于计算两个日期或日期时间值之间的差值,结果精确到天,即返回 expr1 减去 expr2 所得到的天数差。该函数仅关注日期部分,忽略时间部分的具体小时、分钟、秒。
该函数与 mysql 中的 datediff 函数 行为一致
语法
DATEDIFF(<expr1>, <expr2>)
参数
参数 | 说明 |
---|---|
<expr1> | 日期被减数,支持的类型为 datetime 或者 date 类型,具体 datetime 和 date 格式请查看 datetime 的转换 和 date 的转换) |
<expr2> | 日期减数,支持的类型为 date 和 datetime |
返回值
返回 expr1 - expr2 的值,结果精确到天,类型为 INT。
特殊情况:
- expr1 大于 expr2 ,返回正数,反之返回负数
- 若输入任一参数为 NULL, 返回 NULL.
- 忽略时间部分
举例
-- 两个日期相差1天(忽略时间部分)
select datediff(CAST('2007-12-31 23:59:59' AS DATETIME), CAST('2007-12-30' AS DATETIME));
+-----------------------------------------------------------------------------------+
| datediff(CAST('2007-12-31 23:59:59' AS DATETIME), CAST('2007-12-30' AS DATETIME)) |
+-----------------------------------------------------------------------------------+
| 1 |
+-----------------------------------------------------------------------------------+
-- 前一个日期早于后一个日期,返回负数
select datediff(CAST('2010-11-30 23:59:59' AS DATETIME), CAST('2010-12-31' AS DATETIME));
+-----------------------------------------------------------------------------------+
| datediff(CAST('2010-11-30 23:59:59' AS DATETIME), CAST('2010-12-31' AS DATETIME)) |
+-----------------------------------------------------------------------------------+
| -31 |
+-----------------------------------------------------------------------------------+
--- 任一参数为 NULL
mysql> select datediff('2023-01-01', NULL);
+------------------------------+
| datediff('2023-01-01', NULL) |
+------------------------------+
| NULL |
+------------------------------+
---若输入 datetime 类型,会忽略时间部分
select datediff('2023-01-02 13:00:00', '2023-01-01 12:00:00');
+--------------------------------------------------------+
| datediff('2023-01-02 13:00:00', '2023-01-01 12:00:00') |
+--------------------------------------------------------+
| 1 |
+--------------------------------------------------------+
select datediff('2023-01-02 12:00:00', '2023-01-01 13:00:00');
+--------------------------------------------------------+
| datediff('2023-01-02 12:00:00', '2023-01-01 13:00:00') |
+--------------------------------------------------------+
| 1 |
+--------------------------------------------------------+
1 row in set (0.01 sec)