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

DATEDIFF 天数差

计算两个日期相差的天数:MySQL DATEDIFF(a,b)=a-b(只取日期部分);PostgreSQL 用 date - date 直接得整数,时间戳相减得 interval。

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

MySQL

MySQL
SELECT DATEDIFF('2024-06-10', '2024-06-01');   -- 9
SELECT DATEDIFF(end_date, start_date) AS days FROM projects;

PostgreSQL

PostgreSQL
SELECT DATE '2024-06-10' - DATE '2024-06-01';          -- 9(整数)
SELECT (end_ts::date - start_ts::date) AS days FROM projects;
SELECT ts2 - ts1 AS elapsed FROM t;   -- 时间戳相减得 interval
MySQLDATEDIFF(a,b):只比较日期部分,忽略时间
PostgreSQLdate - date => integer;timestamp - timestamp => interval
精度提醒跨分钟/小时的间隔要用时间戳差,而不是 DATEDIFF

易错点

  • DATEDIFF 忽略时间:'2024-06-01 23:59' 与 '2024-06-02 00:01' 差 1 天而不是 0,真实间隔小于 1 天
  • PostgreSQL 里 timestamp - timestamp 得到 interval 不是数字,直接与整数比较会报类型错误

数据来源与参考

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