如何在MySQL中对日期和时间进行加减操作

参考资料

MySQL官方网站 产品文档 日期和时间函数

DATE_ADD和DATE_SUB

这两个函数是一对,一个是加法,一个是减法。它们的作用是对指定的日期加上或者减去一段时间。具体的使用方法参考下面的示例。示例中第一条我们将当前时间加上一个月,第二条将当前时间减去一个月。

            SELECT DATE_ADD(now(), INTERVAL 1 MONTH);
SELECT DATE_SUB(now(), INTERVAL 1 MONTH);
        

ADDDATE和SUBDATE

这两个函数也是一对,一个是加法,一个是减法。它们的使用方法跟DATE_ADD和DATE_SUB是一样的。具体的使用方法参考下面的示例。示例中第一条我们将当前时间加上一个月,第二条将当前时间减去一个月。

            SELECT ADDDATE(now(), INTERVAL 1 MONTH);
SELECT SUBDATE(now(), INTERVAL 1 MONTH);
        

更多用法

我们在示例中只使用了月作为参数,然而,时、分、秒、周、日、年也都是可以作为参数的,并且还可以支持分和秒、时和分和秒和其他的更多组合。具体可以参考下面的列表。

            MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND 'SECONDS.MICROSECONDS'
MINUTE_MICROSECOND 'MINUTES:SECONDS.MICROSECONDS'
MINUTE_SECOND 'MINUTES:SECONDS'
HOUR_MICROSECOND 'HOURS:MINUTES:SECONDS.MICROSECONDS'
HOUR_SECOND 'HOURS:MINUTES:SECONDS'
HOUR_MINUTE 'HOURS:MINUTES'
DAY_MICROSECOND 'DAYS HOURS:MINUTES:SECONDS.MICROSECONDS'
DAY_SECOND 'DAYS HOURS:MINUTES:SECONDS'
DAY_MINUTE 'DAYS HOURS:MINUTES'
DAY_HOUR 'DAYS HOURS'
YEAR_MONTH 'YEARS-MONTHS'
        

其他信息

其实减法也可以使用DATE_ADD,我们只需要将参数写成负数即可。此外MariaDB作为MySQL的一个分支,它们的SQL语法也是基本一致的,所以在MariaDB上也有上述的四个函数,并且使用方法是完全一样的。