一文速学-玩转MySQL中INTERVAL关键字和INTERVAL()函数用法讲解

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 一文速学-玩转MySQL中INTERVAL关键字和INTERVAL()函数用法讲解

前言


时间在数据库中经常作为时间索引,在数据入库和出库以及更新的时候都需要变化。在一些指标计算或者是提取某段时间的数据时,都会根据数据库中的时间索引数据进行操作。因此很大一部分我们操作数据都得先从时间数据下手,但是想要真正提取到我们想要的时间作为索引,还需要我们掌握许多功能函数方便我们操作,这是一个比较复杂的运用过程。


在本人博客数据库MySQL已有三篇详细解释了大部分关于处理时间数据的函数以及实例运用,如果对这一方面有需求的可以看这两篇:


一文速学-玩转MySQL获取时间、格式转换各类操作方法详解


一文速学-玩转MySQL时间选取各类函数操作详解+实例代码


第一篇具体讲述了所有获取SQL本地时间的函数,以及其他数据类型与时间数据类型相互转换。


第二批具体讲述了所有MySQL时间数据选取具体指定时间的函数。以上两篇文章都有具体的代码演示。希望能够帮助到正在看此博文的各位,如果还有什么问题解决不了尽请在评论区提出,博主会一一作答。下面开始正文。


一、INTERVAL


1.基础使用


INTERVAL关键字一般使用格式为:


interval [+/-]<数值> <时间单位>


例如:


interval 3 day


代表意义为3天的时间变量,可由时间变量进行相加减。这里展示SQL表为:

782d757e4c7f4ce9b7c49fda0b860a11.png


例如我们想要将create_time推迟三天:


select (create_time-INTERVAL 3 day) as time  from value_test

17a589d4d28c486aab39fa798e87a386.png


也可以为-3天:


select (create_time+INTERVAL -3 day) as time  from value_test

931651c7f9fe466e9ab5bf0686e36696.png


效果是一样的。

时间单位表为:

时间单位 描述

year 年

quarter 季度

month 月

week 周

day 天

hour 小时

minute 分钟

second 秒

microsecond 微秒

second_microsecond


秒_微秒

minute_microsecond 分_微秒

minute_second 分_秒

hour_microsecond 时_微秒

hour_second 时_秒

hour_minute 时_分

day_microsecond 天_微秒

day_second 天_秒

day_minute 天_分钟

day_hour 天_小时

year_month 年_月


如果我们想要在原基础上加上1小时10分钟10秒:

select (create_time+INTERVAL '1:10:10' hour_second) as time  from value_test


ec85205bdcde4a2aa503b9082c33c36d.png

这里要注意一下指定的时间单位向下兼容性,当我们选择的是hour_second小时到秒时,输入的数值仅为两个数值,例如:

select (create_time+INTERVAL '10:10' hour_second) as time  from value_test


会自动识别为10分10秒:

5527e1f19c9d40d1ab8851f9344b0c5b.png

其他的连续时间段表示单位也都一样,例如:


select (create_time+INTERVAL '10:10:10' day_second) as time  from value_test

f70dbcb925864d39aaa87fcf89cc3253.png


2.在函数中使用


interval一般使用场景都在场景筛选中使用,比如where的条件判断,或者是筛选、去一段指定的时间片段。如取近七日的时间段的数据:


and time between  cast(date_sub(date_format(curdate(),'%Y%m%d') 
, interval 7 day) as DECIMAL) 
and  cast(date_sub(date_format(curdate(),'%Y%m%d') , interval 1 day) 
as DECIMAL)


也经常在date_add和date_sub这种时间运算函数中表示时间变量使用,add和sub都可以通过修改正负号来替换功能。


二、INTERVAL()函数


在MySQL输入interval()函数就会显示相应的语法格式:

a751b184c6294a4ea86f17909c53fe6a.png

INTERVAL(N,N1,N2,N3,...)

INTERVAL()函数为分区函数,其中,N是要判断的数值,N1,N2,N3,...是分段的间隔。

这个函数的返回值是段的位置:

如果N<N1,则返回0,

如果N1<=N<N2,则返回1,

如果N2<=N<N3,则返回2。

区间是左闭右开的。

这里我们用time这一列开展示效果:

97c620c0212243faa241eec88f72a7e5.png


我们想要把time列的时间归类为20220601-20220610为一个区域,20220611-20220620为一个区域,20220621-20220630为一个区域,每隔10天为一个分区。


select INTERVAL(time,20220611,20220621,20220631) as time  from value_test

a0ebe55b002b45b3b0a94db257e27751.png


分完区之后一般进行统计,就可以得到对应区间的个数了:


1. select INTERVAL(time,20220611,20220621,20220631) as times ,count(*) as count 
2. from value_test
3. GROUP BY times


9ef1f005272640b69e6d6e83ec45dce0.png

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4天前
|
存储 关系型数据库 MySQL
MySQL各字符集、排序规则的由来、用法,区别和联系
MySQL支持多种字符集和排序规则,这些在数据库设计和数据处理中起着重要作用。下面是它们的由来、用法、区别和联系: 1. **字符集(Character Set)**: - **由来**:字符集定义了数据库中可以存储的字符集合,以及这些字符在数据库中的存储方式。 - **用法**:在创建数据库或表时,可以指定所需的字符集。常见的字符集包括UTF-8、UTF-16、Latin1等。 - **区别和联系**:不同的字符集支持不同的字符范围和存储方式,选择合适的字符集可以确保数据的正确存储和处理。例如,UTF-8支持全球范围内的大多数字符,而Latin1只支持西欧语言字符集。
|
5天前
|
SQL 关系型数据库 MySQL
MySQL第三战:CRUD,函数1以及union&union all
MySQL第三战:CRUD,函数1以及union&union all
|
5天前
|
自然语言处理 关系型数据库 MySQL
一文明白MySQL索引的用法及好处
一文明白MySQL索引的用法及好处
21 0
|
5天前
|
关系型数据库 MySQL
MySQL union和union all的用法详解和区别
MySQL union和union all的用法详解和区别
11 0
|
5天前
|
SQL 关系型数据库 MySQL
MySQL 基本概念 基础用法 增删改查(特殊查询)语法 详细篇
MySQL 基本概念 基础用法 增删改查(特殊查询)语法 详细篇
|
5天前
|
关系型数据库 MySQL Linux
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
|
5天前
|
存储 关系型数据库 MySQL
MySQL 格式化日期函数 DATE_FORMAT(), FROM_UNIXTIME() 和 UNIX_TIMESTAMP() 之间区别
MySQL 格式化日期函数 DATE_FORMAT(), FROM_UNIXTIME() 和 UNIX_TIMESTAMP() 之间区别
|
5天前
|
关系型数据库 MySQL 数据库
【MySQL】:高效利用MySQL函数实用指南
【MySQL】:高效利用MySQL函数实用指南
12 0
|
5天前
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之在DataWorks中,使用JSON解析函数将MySQL表中的字段解析成多个字段将这些字段写入到ODPS(MaxCompute)中如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
29 3
|
5天前
|
关系型数据库 MySQL
MySQL 常用函数
MySQL 常用函数