SQL 日期函数如何加减日期?

不同数据库对日期加减操作语法各异:SQL Server使用DATEADD函数,MySQL用DATE_ADD/DATE_SUB配合INTERVAL,PostgreSQL支持+/-运算符,SQLite则用date函数加修饰符。

在 SQL 中对日期进行加减操作,主要依赖数据库提供的日期函数。不同数据库的语法略有差异,但核心思路一致:使用 DATEADDDATE_SUB 或通过运算符实现。

使用 DATEADD 函数(SQL Server、Access)

DATEADD 是 SQL Server 和 Access 中常用的日期增减函数,语法如下:

DATEADD(datepart, number, date)

  • datepart:要增减的时间单位,如 day、month、year、hour 等
  • number:增减的数量,正数为加,负数为减
  • date:原始日期值
示例:

SELECT DATEADD(day, 7, '2025-10-01') -- 加7天,结果为 2025-10-08

SELECT DATEADD(month, -1, '2025-10-01') -- 减1个月,结果为 2025-09-01

使用 DATE_ADD 和 DATE_SUB(MySQL)

MySQL 使用 DATE_ADD 和 DATE_SUB 函数进行日期操作:

DATE_ADD(date, INTERVAL expr unit)

DATE_SUB(date, INTERVAL expr unit)

示例:

SELECT DATE_ADD('2025-10-01', INTERVAL 5 DAY) -- 加5天

SELECT DATE_SUB('2025-10-01', INTERVAL 2 MONTH) -- 减2个月

也支持更复杂的单位,如 INTERVAL 3 HOUR、INTERVAL 30 MINUTE

使用运算符(PostgreSQL、SQLite)

PostgreSQL 支持直接使用 + 和 - 运算符:

SELECT '2025-10-01'::date + INTERVAL '7 days' -- 加7天

SELECT '2025-10-01' - INTERVAL '1 month' -- 减1个月

SQLite 虽不支持 INTERVAL,但可通过 *nday 函数间接实现:

SELECT date('2025-10-01', '+7 days') -- 加7天

SELECT date('2025-10-01', '-1 month') -- 减1个月

不同数据库语法不同,关键是要根据所用系统选择对应函数。DATEADD、DATE_ADD、INTERVAL 是常见关键词。基本上就这些,掌握几个典型例子就能灵活运用。