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

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS Agent(兼容OpenClaw),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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
11月前
|
SQL 关系型数据库 MySQL
MySQL 常用函数
我们这次全面梳理 MySQL 中的常用函数,涵盖 聚合函数、字符串函数、日期时间函数、数学函数 和 控制流函数 等五大类。每类函数均配有语法说明与实用示例,帮助读者提升数据处理能力,如统计分析、文本处理、日期计算、条件判断等。文章结尾提供了丰富的实战练习,帮助读者巩固和应用函数技巧,是进阶 SQL 编程与数据分析的实用工具手册。
789 2
|
SQL 关系型数据库 MySQL
【YashanDB知识库】MySQL field 函数的改写方法
【YashanDB知识库】MySQL field 函数的改写方法
|
SQL 关系型数据库 MySQL
Mysql-常用函数及其用法总结
以上列举了MySQL中一些常用的函数及其用法。这些函数在日常的数据库操作中非常实用,能够简化数据查询和处理过程,提高开发效率。掌握这些函数的使用方法,可以更高效地处理和分析数据。
418 19
|
SQL 关系型数据库 MySQL
【MySQL基础篇】盘点MySQL常用四大类函数
本文介绍了MySQL中的四大类常用函数:字符串函数、数值函数、日期函数和流程函数。
【MySQL基础篇】盘点MySQL常用四大类函数
|
SQL 关系型数据库 MySQL
【YashanDB知识库】MySQL field 函数的改写方法
本文来自YashanDB官网,介绍将MySQL的FIELD函数改写到YashanDB的方法。MySQL中,FIELD函数用于自定义排序;而在YashanDB中,可使用DECODE或CASE语句实现类似功能。示例展示对表`t1`按指定顺序排序的过程,提供两种改写方式,结果均符合预期。
|
关系型数据库 MySQL
MySQL常见函数第一期,你都用过哪些呢 ?
本期介绍10个常用的MySQL函数:字符串连接(CONCAT)、提取子字符串(SUBSTRING)、获取字符串长度(LENGTH)、转换大小写(UPPER、LOWER)、去除空格(TRIM)、替换字符串(REPLACE)、查找子字符串位置(INSTR)、带分隔符的字符串连接(CONCAT_WS)以及获取当前日期时间(NOW)。
377 8
|
SQL 关系型数据库 MySQL
MySQL常见函数第二期,你都用过哪些呢 ?
本期介绍了20个常用的MySQL函数,涵盖日期处理(如CURDATE()、DATE_FORMAT())、数学运算(如ABS()、ROUND())、统计分析(如COUNT()、SUM())等,帮助提高SQL查询效率和数据处理能力。希望对大家的学习有所帮助。
385 7
|
8月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
515 158
|
8月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
8月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1315 152

推荐镜像

更多