MySQL INTERVAL运算符

MySQL INTERVAL运算符

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

我们可以使用以下 语法 来创建一个interval值:

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 描述了与表达式相关联的单位的标准格式,下表中有示例:

单位 表达式
天_小时 ‘天 小时’
天_微秒 ‘天 小时:分钟:秒.微秒’
天_分钟 ‘天 小时:分钟’
天_秒 ‘天 小时:分钟:秒’
小时 小时
小时_微秒 ‘小时:分钟:秒.微秒’
小时_秒 ‘小时:分钟:秒’
小时_分钟 ‘小时:分钟’
微秒 微秒
分钟 分钟
分钟_微秒 ‘分钟:秒.微秒’
分钟_秒 ‘分钟:秒’
季度 季度
秒_微秒 秒.微秒’
年_月 ‘年-月’

MySQL间隔示例

让我们通过各种示例来了解如何在MySQL中使用间隔表达式。以下 查询 将给2020年2月1日添加五天,返回2020年2月6日:

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

它将返回如下输出:

MySQL INTERVAL运算符

如果我们在表达式的右侧将 日期或日期时间 的值指定为一个时间间隔值,则可以使用 expr 的负值。请参考下面的示例:

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

我们将获得以下输出:

MySQL INTERVAL运算符

接下来,我们将会看到使用 DATE_SUBDATE_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@javatpoint.com','Gold','2020-06-13'),
      ('Jenifer', 'jenifer@javatpoint.com','Platinum','2020-06-10'),
      ('david', 'david@javatpoint.com','Silver','2020-06-15'),
      ('julia', 'julia@javatpoint.com','Gold','2020-06-20'),
      ('Alexandar','alexandar@javatpoint.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函数,该函数通过一个间隔值将剩余天数减去七天。执行该语句后,我们将得到以下输出:

MySQL INTERVAL运算符

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程