在本教程中,我们将了解 MySQL INTERVAL 关键字及其值以对日期和时间算术执行操作。那么,让我们开始吧!
MySQL INTERVAL 简介
在 MySQL 中,INTERVAL 关键字用于添加或减去日期和时间值。例如,如果您想在当天添加五天并显示新日期,您可以使用 INTERVAL 关键字。
MySQL 为我们提供了一堆区间值。我们将在下面看到这些间隔值的完整列表。
但首先,让我们看看如何使用 interval 关键字。
INTERVAL exp UNIT;
这里,exp 表示表达式,例如 1、2、100、200 或其他取决于单位的表达式。单位是计算日期和时间的度量单位,如日、时、分、秒等。
在上面的语法中,INTERVAL 关键字和单位名称都是不区分大小写的。
我们可以添加或减去间隔值,如下所示 -
date + INTERVAL exp UNIT
date - INTERVAL exp UNIT
请注意,您指定的日期必须采用有效的日期时间格式。
间隔值也可以与其他日期时间函数一起使用,例如 ADDDATE()、DATE_ADD()、DATE_SUB()、TIMESTAMPDIFF() 等。
表达式和单位的格式
下表显示了 exp 和 UNIT 的标准格式 -
Unit | exp |
---|---|
DAY | DAYS |
DAY_HOUR | DAYS HOURS |
DAY_MICROSECOND | DAYS HOURS:MINUTES:SECONDS.MICROSECONDS |
DAY_MINUTE | DAYS HOURS:MINUTES |
DAY_SECOND | DAYS HOURS:MINUTES:SECONDS |
HOUR | HOURS |
HOUR_MICROSECOND | HOURS:MINUTES:SECONDS.MICROSECONDS |
HOUR_MINUTE | HOURS:MINUTES |
HOUR_SECOND | HOURS:MINUTES:SECONDS |
MICROSECOND | MICROSECONDS |
MINUTE | MINUTES |
MINUTE_MICROSECOND | MINUTES:SECONDS.MICROSECONDS |
MINUTE_SECOND | MINUTES:SECONDS |
MONTH | MONTHS |
QUARTER | QUARTERS |
SECOND | SECONDS |
SECOND_MICROSECOND | ‘SECONDS.MICROSECONDS’ |
WEEK | WEEKS |
YEAR | YEARS |
YEAR_MONTH | ‘YEARS-MONTHS’ |
MySQL INTERVAL 示例
在第一个示例中,我们将为当前日期添加 1 天。当前日期是 2022-07-05 (YYYY-MM-DD),所以输出必须是 2022-07-06。
SELECT CURDATE() + INTERVAL 1 DAY;
添加天间隔
您还可以从日期中减去间隔。此外,您也可以指定自己的日期时间,但必须采用有效的日期时间格式。检查下面的示例 -
SELECT '2022-01-01' - INTERVAL 1 DAY;
在这里,我们指定了一年的第一天,并尝试从中减去 1 天。输出应包含上一年。让我们看看输出。

减去天间隔
如您所见,我们得到了预期的输出。
让我们看看如何将间隔值与其他日期时间函数一起使用。
SELECT DATE_ADD('2022-01-01',INTERVAL 10 DAY);
SELECT DATE_SUB('2022-01-01',INTERVAL 10 DAY);
在这里,我们使用了 DATE_ADD() 和 DATE_SUB() 函数来添加和减去指定日期的间隔值。
让我们看看输出。
日期添加和日期子功能
正如你在这里看到的,我们得到了正确的输出。
MySQL INTERVAL 实例
现在我们将看到一些使用区间值的实际示例。
我们将创建一个表格,我们将在其中存储会员的数据以及他们的注册日期和会员资格的到期日期。
我们将使用 DATE_ADD() 函数计算到期日期。
CREATE TABLE members(
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
reg_date DATE DEFAULT(CURDATE()),
exp_date DATE DEFAULT(DATE_ADD(reg_date,INTERVAL 1 YEAR))
);
这里,在注册时,MySQL 会将 reg_date 列的值设置为当前日期。根据注册日期,将计算到期日期。让我们尝试插入值并检查到期日期列是否获得正确的值。为此,我们将明确插入一些注册日期。
INSERT INTO members(name) VALUES ("Bob"),("Vilas"),("John");
INSERT INTO members(reg_date,name) VALUES ('2022-08-01',"Adam"),('2022-08-04',"Cetty");
让我们检查一下输出。
SELECT * FROM members;
区间实例
如您所见,到期日期设置为注册日期后 1 年。
概括
在本教程中,我们了解了 interval 关键字及其值。注意,区间的范围很广。您可以将其用于不同的目的,例如查找将在未来 10 天内完成课程的学生、会员将在下个月到期的成员列表等。练习!