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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 一文速学-玩转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

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
JSON 关系型数据库 MySQL
Mysql(5)—函数
MySQL提供了许多内置的函数以帮助用户进行数据操作和分析。这些函数可以分为几类,包括聚合函数、字符串函数、数值函数、日期和时间函数、控制流函数等。
72 1
Mysql(5)—函数
|
19天前
|
关系型数据库 MySQL Serverless
MySQL函数
最常用的MySQL函数,包括聚合函数,字符串函数,日期时间函数,控制流函数等
|
22天前
|
SQL NoSQL 关系型数据库
|
1月前
|
存储 SQL 关系型数据库
MySQL 存储函数及调用
MySQL 存储函数及调用
75 3
|
1月前
|
缓存 关系型数据库 MySQL
MySQL 满足条件函数中使用查询最大值函数
MySQL 满足条件函数中使用查询最大值函数
126 1
|
1月前
|
关系型数据库 MySQL 数据库
mysql中tonumber函数使用要注意什么
在处理这类转换操作时,考虑周全,利用提供的高性能云服务器资源,可以进一步提升数据库处理效率,确保数据操作的稳定性和安全性,尤其是在处理大量数据转换和运算密集型应用时。
93 0
|
1月前
|
关系型数据库 MySQL 数据处理
企业级应用 mysql 日期函数变量,干货已整理
本文详细介绍了如何在MySQL8.0中使用DATE_FORMAT函数进行日期格式的转换,包括当日、昨日及不同时间段的数据获取,并提供了实际的ETL应用场景和注意事项,有助于提升数据处理的灵活性和一致性。
41 0
|
12天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
26 1
|
14天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
29 4
|
21天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
104 1