SELECT DATE_ADD('2022-01-01', INTERVAL 1 DAY); -- 返回2022-01-02 SELECT DATE_ADD('2022-01-01', INTERVAL 1 MONTH); -- 返回2022-02-01 SELECT DATE_ADD('2022-01-01', INTERVAL 1 YEAR); -- 返回2023-01-01 SELECT DATE_SUB('2022-01-01', INTERVAL 1 DAY); -- 返回2021-12-31 SELECT DATE_SUB('2022-01-01', INTERVAL 1 MONTH); -- 返回2021-12-01 SELECT DATE_SUB('2022-01-01', INTERVAL 1 YEAR); -- 返回2021-01-01
上述代码演示了使用DATE_ADD()和DATE_SUB()函数计算日期加减法。其中,第一个参数是需要进行计算的日期,第二个参数是需要加减的时间间隔。时间间隔可以是DAY、WEEK、MONTH、QUARTER、YEAR等。
SELECT DATE_ADD('2022-01-31', INTERVAL 1 MONTH); -- 返回2022-02-28 SELECT DATE_ADD('2022-02-28', INTERVAL 1 MONTH); -- 返回2022-03-28 SELECT DATE_SUB('2022-03-31', INTERVAL 1 MONTH); -- 返回2022-02-28 SELECT DATE_ADD('2022-02-28', INTERVAL 1 MONTH) + INTERVAL 1 DAY; -- 返回2022-03-29
需要注意的是,使用DATE_ADD()和DATE_SUB()函数进行月份的计算可能会遇到一些问题。如上例所示,对于2022年1月31日加一个月后,结果是2022年2月28日,因为2月没有31日。对于2022年2月28日加一个月后,结果是2022年3月28日,因为在下一个月的最后一天是28日。同时,需要加上1天才能得到正确结果。
除了使用DATE_ADD()和DATE_SUB()函数外,还可以使用DATE_FORMAT()函数,向日期字符串中添加或减去一些数值来实现日期的加减法。
SELECT DATE_FORMAT('2022-01-01', '%Y-%m-%d' + INTERVAL 1 DAY); -- 返回2022-01-02 SELECT DATE_FORMAT('2022-01-01', '%Y-%m-%d' + INTERVAL 1 MONTH); -- 返回2022-02-01 SELECT DATE_FORMAT('2022-01-01', '%Y-%m-%d' + INTERVAL 1 YEAR); -- 返回2023-01-01
上述代码演示了使用DATE_FORMAT()函数计算日期的加减法。需要注意,在日期字符串后面添加或减去数值时,字符串需要使用单引号或双引号括起来。