MySQL - Interval函数

MySQL - Interval函数 首页 / MySQL入门教程 / MySQL - Interval函数

MySQL interval是一个运算符,它基于二进制搜索算法来搜索项目并返回从0到N的值。它主要用于计算日期和时间值。

无涯教程可以使用以下语法创建间隔值:

INTERVAL expr unit

在以上语法中, expr 用于确定间隔值,而 unit 表示间隔单位。 例如,如果要创建两天间隔,则可以使用以下表达式:

INTERVAL 2 DAY

请注意, INTERVAL UNIT 不区分大小写。因此,下面的表达式等同于前面的表达式:

interval 2 day

可以将日期和时间间隔值用作以下语句:

date + INTERVAL expr unit
date - INTERVAL expr unit

间隔值也可以在各种时间函数中使用,例如DATE_SUB,DATE_ADD,TIMESTAMPDIFF,TIMESTAMPADD等。

MySQL 描述了与该表达式关联的单元的标准格式,如下表所示:

Unit描述
DAY DAYS
DAY_HOUR'DAYS HOURS'
DAY_MICROSECOND'DAYS HOURS:MINUTES:SECONDS.MICROSECONDS'
DAY_MINUTE'DAYS HOURS:MINUTES'
DAY_SECOND'DAYS HOURS:MINUTES:SECCONDS'
HOUR HOURS
HOUR_MICROSECOND"HOURS:MINUTES:SECONDS.MICROSECONDS"
HOUR_SECOND'HOURS:MINUTES:SECONDS'
HOUR_MINUTE"HOURS:MINUTES"
MICROSECOND MICROSECONDS
MINUTEMINUTE
MINUTE_MICROSECOND'MINUTES:SECONDS.MICROSECONDS'
MINUTE_SECOND'MINUTES:SECONDS'
MONTH MONTHS
QUARTERQUARTER
SECOND SECONDS
SECOND_MICROSECOND SECONDS.MICROSECONDS'
WEEKWEEKS
YEAR YEARS
YEAR_MONTH'YEARS-MONTHS'

MySQL间隔示例

让无涯教程通过各种示例了解如何在MySQL中使用区间表达式。以下查询向2020年2月1日添加了五天,并返回2020年2月6日:

mysql> SELECT '2020-02-01' + INTERVAL 5 DAY AS DATE;

它将返回以下输出:

MySQL Interval

如果在表达式右侧将 DATE或DATETIME 的值指定为间隔值,则expr的负值可以是用过的。请参见以下示例:

mysql> SELECT '2020-02-01' + INTERVAL -5 DAY AS DATE;

将获得如下输出:

MySQL Interval

接下来,将看到使用 DATE_SUB DATE_ADD 函数从日期值中添加或减去日期/月份/时间。请参阅以下语句:

mysql> SELECT DATE_ADD('2020-02-01', INTERVAL 3 MONTH) AS MONTH_LATER, 
DATE_SUB('2020-02-01',INTERVAL 3 MONTH) AS MONTH_BEFORE;

它将返回以下输出:

MySQL Interval

现在,将在以下查询中使用 TIMESTAMPADD(unit,interval,expression)函数,该函数会将时间戳记值增加45分钟:

mysql> SELECT TIMESTAMPADD(MINUTE, 45, '2020-02-01') MINUTES_LATER;

将看到以下输出:

MySQL Interval

让无涯教程在MySQL表中查看间隔的使用。首先,将使用以下语句创建一个名为 service_memberships 的新表:

CREATE TABLE service_memberships (
	id INT AUTO_INCREMENT PRIMARY KEY,
	name VARCHAR(55) NOT NULL,
	email VARCHAR(55) NOT NULL,
	plan VARCHAR(45) NOT NULL,
	validity_date DATE NOT NULL
);

接下来,将使用 INSERT 语句将记录填充到表中,如下所示:

INSERT INTO service_memberships(name, email, plan, validity_date)
VALUES('Stephen', 'stephen@learnfk.com','Gold','2020-06-13'),
      ('Jenifer', 'jenifer@learnfk.com','Platinum','2020-06-10'),
      ('david', 'david@learnfk.com','Silver','2020-06-15'),
      ('julia', 'julia@learnfk.com','Gold','2020-06-20'),
      ('Alexandar','alexandar@learnfk.com','Silver','2020-06-08');

接下来,执行 SELECT 语句以验证记录:

MySQL Interval

假设要找到其成员资格在2020-06-05日期后7天内过期的成员。可以使用以下查询找到这些详细信息:

SELECT name, email, plan, validity_date,
DATEDIFF(validity_date, '2020-06-05') AS remaining_days
FROM service_memberships
WHERE '2020-06-05' BETWEEN DATE_SUB(validity_date, INTERVAL 7 DAY) AND validity_date;

在此语句中,使用了DATE_SUB函数,该函数将间隔天指定的剩余天数减去7天。执行该语句后,无涯教程将获得以下输出:

MySQL Interval

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

玩转webpack -〔程柳锋〕

Linux实战技能100讲 -〔尹会生〕

研发效率破局之道 -〔葛俊〕

Redis核心技术与实战 -〔蒋德钧〕

深度学习推荐系统实战 -〔王喆〕

实用密码学 -〔范学雷〕

跟着高手学复盘 -〔张鹏〕

手把手带你搭建秒杀系统 -〔佘志东〕

深入浅出分布式技术原理 -〔陈现麟〕

好记忆不如烂笔头。留下您的足迹吧 :)