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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 一文速学-玩转MySQL时间选取各类函数操作详解+实例代码

前言


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


上文:一文速学-玩转MySQL获取时间、格式转换各类操作方法详解 已经详细介绍了SQL时间数据类型:三种:Date、Datetime、Timestamp。以及如何在MySQL数据库中获取本地时间以及其他数据类型和时间数据类型的相互转换。在了解以上函数方法操作的基础之上,我们便可以开始进行时间运算得到我们想要的时间片了。因此特地写下这篇文章,记录一些十分好用常用的处理数据库SQL时间运算的函数,以及实例运用这些函数完成一些复杂查询任务。希望能够帮助到正在看此博文的各位,如果还有什么问题解决不了尽请在评论区提出,博主会一一作答。


MySQL时间选取函数


1.<time类型>(<数据>)类型


上文在获取本地日期的年份也日期时用到了HOUR(SYSDATE()),其实这也是最常用的时间选取函数,将要取的时间类型放前置就好了,这里将所有的前置时间函数贴出:


前置 结果描述

date 获取日期 如2022-06-19

time 获取时间 如10:10:22.111111

year 获取年份 如2022

quarter

获取当月季度 每三个月为一个季度 1-3为1季度


4-6为2季度,7-9为3季度,10-12为4季度。


month 获取月份 如现在的6月份,就显示6

week 获取从1月1日开始度过的周数 现在也就是24周

day 获取天数到当前月份1日为止,如19日

hour 获取小时 如10点

minute 获取分钟 如现在16分钟

second 获取秒数 如59秒

microsecond 获取微秒数


由于展示函数格式均有重复性这里仅展示一种,展示的数据库仍和上次一样:

d8c1996f73bd4f4fa9efc2192390819b.png


select week(create_time) from value_test

4ab2521abec84f4498e4a1470e87519e.png


其他用法均类似,这里不再展示,将所有代码贴出大家可自行尝试:

select date(create_time) from value_test
select time(create_time) from value_test
select year(create_time) from value_test
select quarter(create_time) from value_test
select month(create_time) from value_test
select week(create_time) from value_test
select day(create_time) from value_test
select hour(create_time) from value_test
select minute(create_time) from value_test
select second(create_time) from value_test
select microsecond(create_time) from value_test


2.Extract()


和上述效果一样,除了没有date(),time() 的功能外,其他功能一应具全。并且还具有选取‘day_microsecond'等功能。

select EXTRACT(month  from create_time) from value_test

639e8b30bc4248b982b93566a68a3804.png

同样这些代码格式具有重复性,这里把所有extarct可用的格式贴出:


前置 结果描述

date 获取日期 如2022-06-19

time 获取时间 如10:10:22.111111

year 获取年份 如2022

quarter

获取当月季度 每三个月为一个季度 1-3为1季度


4-6为2季度,7-9为3季度,10-12为4季度。


month 获取月份 如现在的6月份,就显示6

week 获取从1月1日开始度过的周数 现在也就是24周

day 获取天数到当前月份1日为止,如19日

hour 获取小时 如10点

minute 获取分钟 如现在16分钟

second 获取秒数 如59秒

microsecond 获取毫秒数

year_month 获取年后月份 如:202206

day_hour 获取日和小时 如:1916

day_minute 获取日、小时、分钟 如191644

day_second 获取日到秒 如19164455

day_microsecond 获取日到微秒 如19164455123456

hour_minute 获取小时和分钟 如1646

hour_second 获取小时到秒数 如164555

hour_microsecond 获取小时到微妙数 如164555123456

minute_second 获取分钟到秒 如4813

minute_microsecond 获取分钟到微秒 如4813123456

second_microsecond 获取秒到微妙 如13123456


 其他用法均类似,这里不再展示,将所有代码贴出大家可自行尝试:

select EXTRACT(year from create_time) from value_test
select EXTRACT(quarter from create_time) from value_test
select EXTRACT(month from create_time) from value_test
select EXTRACT(week from create_time) from value_test
select EXTRACT(day from create_time) from value_test
select EXTRACT(hour from create_time) from value_test
select EXTRACT(minute from create_time) from value_test
select EXTRACT(second from create_time) from value_test
select EXTRACT(microsecond from create_time) from value_test
select EXTRACT(year_month from create_time) from value_test
select EXTRACT(day_hour from create_time) from value_test
select EXTRACT(day_minute from create_time) from value_test
select EXTRACT(day_second from create_time) from value_test
select EXTRACT(day_microsecond from create_time) from value_test
select EXTRACT(hour_second from create_time) from value_test
select EXTRACT(hour_minute from create_time) from value_test
select EXTRACT(hour_microsecond from create_time) from value_test
select EXTRACT(minute_second from create_time) from value_test
select EXTRACT(minute_microsecond from create_time) from value_test
select EXTRACT(second_microsecond from create_time) from value_test

3.Dayof<时间类型>


共有三种函数:


格式 结果描述
dayofweek 返回当日在该周的位置 1为星期天 2为星期二...
dayofmonth 返回当日在该月的位置 天数
dayofyear 返回当日在该年的位置 天数


select dayofweek(create_time) from value_test

4695f0b888964426ba3e30e907a71d4b.png

select dayofmonth(create_time) from value_test

1e9d7122c02b4207a50b8aeefba224a8.png

select dayofyear(create_time) from value_test

52fe372586df4bc796f197f00b451588.png


4.<时间类型>name()


该函数返回的是星期和月份的名称:


select dayname(create_time) from value_test

0eed7f4f14204790b1b6c7320aa03120.png

select monthname(create_time) from value_test

5806878d5cff4db383fd239215ee03f7.png

5.last_day()


该函数返回月份中的最后一天


select last_day('2022-02-01')

2de13065ceef4c9f9af06e33266b97fd.png

select last_day('2022-06-01')

ea150bf67d404b0585270ecc5f19a40f.png


可以利用计算得到当月共有多少天数。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
25天前
|
SQL 前端开发 关系型数据库
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
43 0
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
|
7天前
|
关系型数据库 MySQL Serverless
MySQL函数
最常用的MySQL函数,包括聚合函数,字符串函数,日期时间函数,控制流函数等
|
1天前
|
关系型数据库 MySQL 数据库
【赵渝强老师】启动与关闭MySQL数据库实例
MySQL数据库安装完成后,可以通过命令脚本启动、查看状态、配置开机自启、查看自启列表及关闭数据库。本文提供了详细的操作步骤和示例代码,并附有视频讲解。
|
10天前
|
SQL NoSQL 关系型数据库
|
21天前
|
关系型数据库 MySQL 数据库
mysql中tonumber函数使用要注意什么
在处理这类转换操作时,考虑周全,利用提供的高性能云服务器资源,可以进一步提升数据库处理效率,确保数据操作的稳定性和安全性,尤其是在处理大量数据转换和运算密集型应用时。
67 0
|
24天前
|
存储 关系型数据库 MySQL
mysql 8.0 的 建表 和八种 建表引擎实例
mysql 8.0 的 建表 和八种 建表引擎实例
20 0
|
25天前
|
关系型数据库 MySQL 数据处理
企业级应用 mysql 日期函数变量,干货已整理
本文详细介绍了如何在MySQL8.0中使用DATE_FORMAT函数进行日期格式的转换,包括当日、昨日及不同时间段的数据获取,并提供了实际的ETL应用场景和注意事项,有助于提升数据处理的灵活性和一致性。
38 0
|
25天前
|
存储 关系型数据库 MySQL
Key_Value 形式 存储_5级省市城乡划分代码 (mysql 8.0 实例)
本文介绍了如何使用MySQL8.0数据库中的Key_Value形式存储全国统计用区划代码和城乡划分代码(5级),包括导入数据、通过数学函数提取省市区信息,以及查询5级行政区划的详细数据。
27 0
|
2天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
14 4
|
26天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
58 3
Mysql(4)—数据库索引
下一篇
无影云桌面