DATE_SUB
和 ADD_MONTHS
是兩個(gè)用于處理日期的函數(shù),但它們之間有一些關(guān)鍵區(qū)別
DATE_SUB
:這個(gè)函數(shù)用于從給定的日期中減去指定的時(shí)間單位(如天、月或年)。它常用于計(jì)算某個(gè)日期之前的日期。ADD_MONTHS
:這個(gè)函數(shù)用于將指定的月份數(shù)添加到給定的日期。它常用于計(jì)算某個(gè)日期之后的日期。DATE_SUB
:DATE_SUB(date, INTERVAL expr unit)
,其中 date
是要操作的日期,expr
是要減去的時(shí)間單位數(shù)量,unit
是時(shí)間單位(如 DAY、MONTH 或 YEAR)。ADD_MONTHS
:ADD_MONTHS(date, num_months)
,其中 date
是要操作的日期,num_months
是要添加的月份數(shù)。假設(shè)我們有以下日期:2021-08-31
DATE_SUB
函數(shù)減去 3 個(gè)月:SELECT DATE_SUB('2021-08-31', INTERVAL 3 MONTH);
結(jié)果:2021-05-31
ADD_MONTHS
函數(shù)添加 3 個(gè)月:SELECT ADD_MONTHS('2021-08-31', 3);
結(jié)果:2021-11-30
注意,在 ADD_MONTHS
函數(shù)中,當(dāng)給定的日期是月份的最后一天時(shí),結(jié)果也是新月份的最后一天。而在 DATE_SUB
函數(shù)中,結(jié)果保持在同一天,除非該天不存在于目標(biāo)月份,否則會(huì)返回目標(biāo)月份的最后一天。
總之,DATE_SUB
和 ADD_MONTHS
函數(shù)的主要區(qū)別在于它們分別用于減去和添加月份,并且在處理不同月份的最后一天時(shí)可能會(huì)有所不同。