MySQL ADDDATE() 用法与实例

在 MySQL 中, ADDDATE() 函数被用来向指定日期添加指定的时间量。 这对我们要获取几天后或者几天前的日期很有帮助。

发布于

在 MySQL 中, ADDDATE() 函数被用来向指定日期添加指定的时间量。 这对我们要获取几天后或者几天前的日期很有帮助。

例如,您可以使用它将 10 天添加到给定日期。您也可以将 年、月、周、时间等时间量添加到某个日期值上。

本文将说明 MySQL ADDDATE() 函数的用法并给出了几个实例。

语法

您可以通过以下两种方式使用 MySQL ADDDATE() 函数:

ADDDATE(expr, days)
ADDDATE(date, INTERVAL expr unit)

INTERVAL expr unit 是一种时间段类型的值。 您可以在 unit 出指定单位, 比如 DAY, MONTH, YEAR, WEEK, HOUR, MINUTE, SECOND 等。

下表列出了可使用的日期时间单位:

单位 描述
MICROSECOND 微秒
SECOND
MINUTE 分钟
HOUR 小时
DAY
WEEK 星期
MONTH 月份
QUARTER 宿舍
YEAR
SECOND_MICROSECOND 秒.微秒
MINUTE_MICROSECOND 分钟.秒.微秒
MINUTE_SECOND 分钟.秒
HOUR_MICROSECOND 小时.分钟.秒.微秒
HOUR_SECOND 小时、分钟、秒
HOUR_MINUTE 小时.分钟
DAY_MICROSECOND 天 小时.分钟.秒.微秒
DAY_SECOND 天 小时.分钟.秒
DAY_MINUTE 天 小时.分钟
DAY_HOUR 天 小时
YEAR_MONTH 年-月

示例 1 - 添加几天

要计算 2022-12-31 10 天后的日期,请使用下面的语句:

SELECT ADDDATE('2022-12-31', 10);

输出:

+---------------------------+
| ADDDATE('2022-12-31', 10) |
+---------------------------+
| 2023-01-10                |
+---------------------------+

在本示例中,由于只是累加天数,所以我们只需要提供一个整数给到第二个参数。当然,您也可以传入一个 INTERVAL 值,如下:

SELECT ADDDATE('2022-12-31', INTERVAL 10 DAY);

输出:

+----------------------------------------+
| ADDDATE('2022-12-31', INTERVAL 10 DAY) |
+----------------------------------------+
| 2023-01-10                             |
+----------------------------------------+

示例 2 – 日期单位

您还可以在 ADDDATE() 函数中使用一些日期单位,以添加一些较多的天数,如下:

SELECT
  '2022-12-31' AS 'Date',
  ADDDATE('2022-12-31', INTERVAL 1 WEEK) AS 'Add 1 Week',
  ADDDATE('2022-12-31', INTERVAL 1 MONTH) AS 'Add 1 Month',
  ADDDATE('2022-12-31', INTERVAL 1 YEAR) AS 'Add 1 Year';

输出:

+------------+------------+-------------+------------+
| Date       | Add 1 Week | Add 1 Month | Add 1 Year |
+------------+------------+-------------+------------+
| 2022-12-31 | 2023-01-07 | 2023-01-31  | 2023-12-31 |
+------------+------------+-------------+------------+

示例 3 – 时间单位

您还可以在 ADDDATE() 函数中使用一些时间单位,以添加一些较小的时间段,如下:

SELECT
  '2022-12-31' AS 'Date',
  ADDDATE('2022-12-31', INTERVAL 1 HOUR) "Add 1 Hour",
  ADDDATE('2022-12-31', INTERVAL 2 MINUTE) "Add 2 Minutes",
  ADDDATE('2022-12-31', INTERVAL 3 SECOND) "Add 1 Second";

输出:

+------------+---------------------+---------------------+---------------------+
| Date       | Add 1 Hour          | Add 2 Minutes       | Add 1 Second        |
+------------+---------------------+---------------------+---------------------+
| 2022-12-31 | 2022-12-31 01:00:00 | 2022-12-31 00:02:00 | 2022-12-31 00:00:03 |
+------------+---------------------+---------------------+---------------------+

示例 4 – 负值

您可以提供一个负值,以表示减去一个指定的时间段。

要计算当前日期的前一天,您可以使用如下语句:

SELECT ADDDATE(CURDATE(), -1);

输出:

+------------------------+
| ADDDATE(CURDATE(), -1) |
+------------------------+
| 2022-12-28             |
+------------------------+

负值同样可用于 INTERVAL 值,如下:

SELECT ADDDATE(CURDATE(), INTERVAL -1 DAY);

输出:

+-------------------------------------+
| ADDDATE(CURDATE(), INTERVAL -1 DAY) |
+-------------------------------------+
| 2022-12-28                          |
+-------------------------------------+

其他相关函数