MySQL TIMESTAMPDIFF 函数详解
在处理业务逻辑时,我们经常需要计算两个时间点之间的间隔。MySQL 提供了 TIMESTAMPDIFF 函数来高效完成这一任务。它的语法结构非常直观:
TIMESTAMPDIFF(unit, begin, end);
这个函数返回两个时间点的差值。begin 和 end 可以是表达式,且允许混合类型。例如,如果 begin 是 DATE 而 end 是 DATETIME,函数会自动将 DATE 视为时间部分为 00:00:00 的 DATETIME 值。
支持的单位
unit 参数决定了返回值的计量单位,可选值包括:
- MICROSECOND(微秒)
- SECOND(秒)
- MINUTE(分)
- HOUR(小时)
- DAY(天)
- WEEK(周)
- MONTH(月)
- QUARTER(季度)
- YEAR(年)
基础用法示例
假设我们要计算 2018 年 1 月 1 日到 2018 年 6 月 1 日的月份差:
SELECT TIMESTAMPDIFF(MONTH, '2018-01-01', '2018-06-01') AS result;
执行结果为 5。如果换成按天计算,只需修改单位:
SELECT TIMESTAMPDIFF(DAY, '2010-01-01', '2010-06-01') AS result;
这里会返回 151 天。
对于更精确的时间点,比如分钟级的差异,我们可以这样写:
SELECT TIMESTAMPDIFF(MINUTE, '2018-01-01 10:00:00', '2018-01-01 10:45:00') AS result;
结果是 45。这里有个细节需要注意:TIMESTAMPDIFF 只考虑与 unit 参数匹配的时间部分。如果你传入的是 MINUTE,即使结束时间多了 59 秒,它也不会进位。
SELECT TIMESTAMPDIFF(, , ) ;

