DATE_SUB
和 ADD_MONTHS
是两个用于处理日期的函数,但它们之间有一些关键区别
DATE_SUB
:这个函数用于从给定的日期中减去指定的时间单位(如天、月或年)。它常用于计算某个日期之前的日期。ADD_MONTHS
:这个函数用于将指定的月份数添加到给定的日期。它常用于计算某个日期之后的日期。DATE_SUB
:DATE_SUB(date, INTERVAL expr unit)
,其中 date
是要操作的日期,expr
是要减去的时间单位数量,unit
是时间单位(如 DAY、MONTH 或 YEAR)。ADD_MONTHS
:ADD_MONTHS(date, num_months)
,其中 date
是要操作的日期,num_months
是要添加的月份数。假设我们有以下日期:2021-08-31
DATE_SUB
函数减去 3 个月:SELECT DATE_SUB('2021-08-31', INTERVAL 3 MONTH);
结果:2021-05-31
ADD_MONTHS
函数添加 3 个月:SELECT ADD_MONTHS('2021-08-31', 3);
结果:2021-11-30
注意,在 ADD_MONTHS
函数中,当给定的日期是月份的最后一天时,结果也是新月份的最后一天。而在 DATE_SUB
函数中,结果保持在同一天,除非该天不存在于目标月份,否则会返回目标月份的最后一天。
总之,DATE_SUB
和 ADD_MONTHS
函数的主要区别在于它们分别用于减去和添加月份,并且在处理不同月份的最后一天时可能会有所不同。