首页/数据/SQL 速查/TIMESTAMPDIFF 时间间隔计算
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条
函数速查60 条
变更与事务52 条性能与执行计划72 条

TIMESTAMPDIFF 时间间隔计算

按指定单位计算两个时间点的差值(单位边界数):MySQL 直接支持;PostgreSQL 用时间戳相减取 epoch 换算。

SQL 速查数据更新于 2026-10-12

MySQL

MySQL
SELECT TIMESTAMPDIFF(SECOND, start_at, end_at) AS secs,
       TIMESTAMPDIFF(MINUTE, start_at, end_at) AS mins,
       TIMESTAMPDIFF(DAY,    start_at, end_at) AS days
FROM tasks;

PostgreSQL

PostgreSQL
SELECT EXTRACT(EPOCH FROM (end_at - start_at))::bigint        AS secs,
       TRUNC(EXTRACT(EPOCH FROM (end_at - start_at)) / 60)     AS mins,
       (end_at::date - start_at::date)                         AS days
FROM tasks;
单位MySQL:SECOND/MINUTE/HOUR/DAY/WEEK/MONTH/QUARTER/YEAR
返回值MySQL 返回整数(截断小数部分)
PostgreSQL无同名函数;epoch 秒差值 + 除法截断,或 PG 15+ date_bin 归桶

易错点

  • TIMESTAMPDIFF 按“跨过的单位边界”计数:MONTH 差值不等于天数除以 30,报表口径要写清楚
  • PostgreSQL 的 EXTRACT(EPOCH ...) 返回 numeric(PG 14 起),与整数比较或 JSON 序列化前先转换类型

数据来源与参考

  • MySQL 8.0 Reference Manual · TIMESTAMPDIFF
  • PostgreSQL Documentation · Date/Time Functions and Operators
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌