SQL 日期函数如何实现日期加减月份?

要添加月份,您需要使用数据库附带的功能。

MySQL 使用 DATE_ADD 加 INTERVAL。
PostgreSQL直接使用+INTERVAL。
SQL Server 使用 DATEADD 加 MONTH。
Oracle 使用ADD_MONTHS。

请注意日期格式必须匹配。
月底再加上一个月,就会出现混乱。
自动计算除夕夜。

索引可以提高性能。

您使用哪个数据库?

mysql 中自定义日期减日期函数

1 . 如何使用date_add():添加日期和时间间隔。
例如,使用 date_add(now(), Interval 1 day) 添加 1 天。
2 . 使用 Date_sub():减去日期时间间隔。
例如,要减去 1 1 小时 1 分 1 秒,请使用 date_sub('1 9 9 8 -01 -01 00:00:00', Interval '1 1 :1 :1 ' day_second)。
3 . period_add() 和 period_diff(): period_add(YYYYMM, N) 添加 N 个月,period_diff(YYYYMM, YYYYMM) 减去 N 个月,用于某些格式的日期。
4 . datediff() 和 timediff():datediff(date1 , date2 ) 计算两个日期之间的天数,timediff(time1 , time2 ) 计算两个时间点之间的差异。

mysql 中日期加减

DATE_ADD和DATE_SUB用于日期的加减,非常方便。

只有两个函数,一个用于加法,一个用于减法,具有相同的语法。

DATE_ADD(日期, 表达式类型 INTERVAL) 添加时间间隔。
负值相当于减法。
DATE_SUB(date, INTERVAL expr type) 减去时间间隔。
负值相当于加法。

日期参数是日期或时间表达式。
expr 是时间间隔,有正负号。
type 是时间单位,例如 YEAR、MONTH、DAY、HOUR、MINUTE、SECOND。

例如,现在是 2 02 5 -1 1 -1 7 1 9 :1 6 :05
添加 1 0 天:DATE_ADD(NOW(),间隔 1 0 天) 结果是2 02 5 年1 1 月2 7 日1 9 :1 6 :05
减去 2 个月:DATE_SUB(NOW(), INTERVAL 2 MONTH) 结果是2 02 5 -09 -1 7 1 9 :1 6 :05
添加 1 年:DATE_ADD('2 02 5 -1 1 -1 7 ', INTERVAL 1 YEAR) 结果是2 02 6 年1 1 月1 7 日。

添加 3 小时:DATE_ADD(NOW(), INTERVAL 3 HOUR) 结果是2 02 5 年1 1 月1 7 日2 2 :1 6 :05
减去 4 5 分钟:DATE_SUB(NOW(),INTERVAL 4 5 分钟) 结果是2 02 5 年1 1 月1 7 日1 8 :3 1 :05
反转负值: DATE_ADD(NOW(), INTERVAL -5 DAY) 等于负 5 天。
DATE_SUB(NOW(), INTERVAL -1 MONTH) 相当于添加 1 个月。

注意驱动器的兼容性。
如果您使用时间作为日期,则会自动添加零。

闰年也会自动处理。
例如 DATE_ADD('2 02 5 -02 -2 9 ', INTERVAL 1 YEAR) 结果是2 02 6 年3 月1 日。

返回类型取决于输入。
DATE 输入返回 DATE,DATETIME 输入返回 DATETIME。

要计算日期差异,请使用 DATEDIFF(end_date, start_date),它是天数。

格式化输出,例如 DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 7 DAY), '%Y-%m-%d %H:%i:%s')
这两个函数是标准函数。
用于 5 .7 及更高版本。

不要总是使用负值进行转换,代码会很复杂。
直接使用DATE_ADD/DATE_SUB。

您具体使用哪个场景?