MySQL中常用的日期处理方法总结

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL中常用的日期处理方法总结

前言


  上一章回顾复习了一下MySQL中比较常用的函数,MySQL中的函数大大方便了我们的操作。在项目中经常操作数据库的时间,相信有部分小伙伴在操作数据库时间的时候可能会遇到各种各样的问题,那么这一章就简单介绍一下MySQL中时间操作的相关函数和经验。


  本次示例中还将使用到上一章中的商品表中的数据进行演示


SQL中的时间函数


  SQL中的时间函数为我们提供了处理日期的相关函数,常用的函数有NOW()、CURDATE()、CURTIME()、DATE()、EXTRACT()、DATE_ADD()、DATE_SUB()、DATEDIFF()、DATE_FORMAT(),其中DATE_FORMAT在实际使用中是比较多的,也是比较复杂的,所以会重点介绍DATE_FORMAT()按指定格式去显示时间。


获取当前时间NOW()、CURDATE()、CURTIME()


  MySQL中NOW()、CURDATE()、CURTIME()这三个函数都是获取当前时间的函数。三个方法都是获取当前时间的,但是三个函数又有不同点。其中NOW()是获取的当前的年月日+时分秒,示例:2021-11-25 22:26:45;CURDATE()是获取的当前的年月日,示例:2021-11-25;CURTIME()获取的是时分秒,示例:22:26:45。下面执行SQL,查看其中的不同点:


SELECT NOW(),CURDATE(),CURTIME()

image.png


DATE()


  DATE()函数的主要作用是提取日期或日期的时间表达式的日期部分。类似于CURDATE()函数,取得是年月日。一般在DATE(时间表达式的列)输出年月日。 例如输出商品表中商品创建的年月日和商品的名称。

SELECT goods_name,DATE(create_time) FROM goods


执行结果如下:


image.png


EXTRACT()


  EXTRACT()主要作用是返回日期时间表达式中的指定的单独部分。例如数据库中列时间表达式为2021-11-25 22:26:45可以指定只返回月份11。其语法格式为: EXTRACT(指定的时间单位 FROM 时间表达式列名) 示例:输出商品表中商品创建的月份和商品名称。

SELECT goods_name,EXTRACT( MONTH FROM  create_time) FROM goods


image.png



 其中指定的时间单位和测试如下: 时间以商品表中商品id为1的商品的创建时间为标准表达式进行测试。执行SQL如下:


SELECT EXTRACT( 时间单位格式 FROM  create_time) FROM goods WHERE id =1
复制代码
时间单位格式 描述 标准时间表达式 执行结果值
MICROSECOND 微秒 2021-11-24 23:19:54 0
SECOND 2021-11-24 23:19:54 54
MINUTE 分钟 2021-11-24 23:19:54 19
HOUR 小时 2021-11-24 23:19:54 23
DAY 天数 2021-11-24 23:19:54 24
WEEK 星期 2021-11-24 23:19:54 47
MONTH 月份 2021-11-24 23:19:54 11
QUARTER 季度 2021-11-24 23:19:54 4
YEAR 年份 2021-11-24 23:19:54 2021
SECOND_MICROSECOND 秒到微秒级别 2021-11-24 23:19:54 54000000
MINUTE_MICROSECOND 分钟到微秒级别 2021-11-24 23:19:54 1954000000
MINUTE_SECOND 分钟到秒级别 2021-11-24 23:19:54 1954
HOUR_MICROSECOND 小时到微妙 2021-11-24 23:19:54 231954000000
HOUR_SECOND 小时和秒 2021-11-24 23:19:54 231954
HOUR_MINUTE 小时和分钟 2021-11-24 23:19:54 2319
DAY_MICROSECOND 天到微妙级别 2021-11-24 23:19:54 24231954000000
DAY_SECOND 天到秒级别 2021-11-24 23:19:54 24231954
DAY_MINUTE 天到分钟级别 2021-11-24 23:19:54 242319
DAY_HOUR 天到小时级别 2021-11-24 23:19:54 2423
YEAR_MONTH 年月 2021-11-24 23:19:54 202111


DATE_ADD()


  DATE_ADD() 函数的主要功能是向指定的日期添加指定的时间间隔。其支持的时间单位格式与EXTRACT()支持的时间单位格式是一致的。其语法是: SELECT DATE_ADD(标准时间格式,INTERVAL 时间间隔数值 时间单位格式) FROM 表名 查询条件


SELECT goods_name,create_time,DATE_ADD(create_time,INTERVAL 3 DAY) FROM goods WHERE id =1

  

例如:查询商品表中的商品id为1的商品名称和创建时间,创建时间在原有基础上加3天,其执行结果是2021-11-27 23:19:54,如下图:


image.png


DATE_SUB()


  DATE_SUB() 函数与DATE_ADD()函数正好相反,DATE_SUB()的主要功能是向指定的日期减去指定的时间间隔。其支持的时间单位格式与EXTRACT()支持的时间单位格式是一致的。其语法是: SELECT DATE_SUB(标准时间格式,INTERVAL 时间间隔数值 时间单位格式) FROM 表名 查询条件


SELECT goods_name,create_time,DATE_SUB(create_time,INTERVAL 3 DAY) FROM goods WHERE id =1

  

例如:查询商品表中的商品id为1的商品名称和创建时间,创建时间在原有基础上减去3天,其执行结果是2021-11-21 23:19:54,如下图:


image.png


DATEDIFF()


  DATEDIFF() 函数主要作用是返回两个日期之间的天数。只有日期的部分参与计算,时分秒的时间不参与计算。其语法格式是:SELECT DATEDIFF(时间1,时间2)


SELECT DATEDIFF('2021-11-25','2021-01-01') 


其执行结果是:


image.png


DATE_FORMAT()


  DATE_FORMAT()函数的主要功能是输出指定格式化的时间进行显示。其语法结构是:

DATE_FORMAT(日志,需要显示的日期格式)

  


示例其中日期取值是商品表中的商品id为1的商品创建的时间。其SQL如下:


SELECT goods_name,create_time,DATE_FORMAT(create_time,"%a") FROM goods WHERE id =1


执行结果截图如下:


image.png


  由于经常使用到相关日期格式化显示,而DATE_FORMAT()的日期格式表达式又比较复杂,因此在表格中列出来了,方便给大家演示参考。


格式 描述 日期 输出示例
%a 缩写星期名 2021-11-24 23:19:54 Wed
%b 缩写月名 2021-11-24 23:19:54 Nov
%c 月,数值 2021-11-24 23:19:54 11
%D 带有英文前缀的月中的天 2021-11-24 23:19:54 24th
%d 月的天,数值(00-31) 2021-11-24 23:19:54 24
%e 月的天,数值(0-31) 2021-11-24 23:19:54 24
%f 微秒 2021-11-24 23:19:54 000000
%H 小时 (00-23) 2021-11-24 23:19:54 23
%h 小时 (01-12) 2021-11-24 23:19:54 11
%I 小时 (01-12) 2021-11-24 23:19:54 11
%i 分钟,数值(00-59) 2021-11-24 23:19:54 19
%j 年的天 (001-366) 2021-11-24 23:19:54 328
%k 小时 (0-23) 2021-11-24 23:19:54 23
%l 小时 (1-12) 2021-11-24 23:19:54 11
%M 月名 2021-11-24 23:19:54 November
%m 月,数值(00-12) 2021-11-24 23:19:54 11
%p AM 或 PM 2021-11-24 23:19:54 PM
%r 时间,12-小时(hh:mm:ss AM 或 PM) 2021-11-24 23:19:54 11:19:54 PM
%S 秒(00-59) 2021-11-24 23:19:54 54
%s 秒(00-59) 2021-11-24 23:19:54 54
%T 时间, 24-小时 (hh:mm:ss) 2021-11-24 23:19:54 23:19:54
%U 周 (00-53) 星期日是一周的第一天 2021-11-24 23:19:54 47
%u 周 (00-53) 星期一是一周的第一天 2021-11-24 23:19:54 47
%V 周 (01-53) 星期日是一周的第一天,与%X 使用 2021-11-24 23:19:54 47
%v 周 (01-53) 星期一是一周的第一天,与%x 使用 2021-11-24 23:19:54 47
%W 星期名 2021-11-24 23:19:54 Wednesday
%w 周的天 (0=星期日, 6=星期六) 2021-11-24 23:19:54 3
%X 年,其中的星期日是周的第一天,4 位,与%V 使用 2021-11-24 23:19:54 2021
%x 年,其中的星期一是周的第一天,4 位,与%v 使用 2021-11-24 23:19:54 2021
%Y 年,4 位 2021-11-24 23:19:54 2021
%y 年,2 位 2021-11-24 23:19:54 21


结语


  好了,以上就是MySQL中常用的日期处理方法总结



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
MYSQL————DDL方法使用(包含在数据库,以及具体数据库表格的一些操纵)
MYSQL————DDL方法使用(包含在数据库,以及具体数据库表格的一些操纵)
|
12天前
|
关系型数据库 MySQL 数据库
MySQL索引的类型与优化方法
MySQL索引的类型与优化方法
|
13天前
|
存储 关系型数据库 MySQL
MySQL删除索引的方法与注意事项
MySQL删除索引的方法与注意事项
|
1月前
|
存储 算法 关系型数据库
mysql存储地理信息的方法
MySQL 支持 `GEOMETRY` 及其子类型(如 `POINT`, `LINESTRING`, `POLYGON`)存储地理信息,并提供 `SPATIAL` 索引来加速查询。创建带有 `SPATIAL INDEX` 的表,使用 `GeomFromText` 或 `PointFromText` 插入数据,通过 `MBRContains`, `Distance_Sphere`, `ST_Distance_Sphere` 等函数查询。例如,查找矩形区域内位置、一定距离内的点,以及判断点是否在多边形内并计算距离。
29 1
|
1月前
|
SQL 关系型数据库 MySQL
MySQL大数据量分页查询方法及其优化
MySQL大数据量分页查询方法及其优化
|
18天前
|
关系型数据库 MySQL 数据库
Python中使用MySQL模糊查询的方法
(1)同样需要将your_username、your_password、your_database替换为我们的MySQL数据库的实际用户名、密码和数据库名。 (2)在mysql.connector.connect()中,我们没有直接指定字符集和游标类型,因为mysql-connector-python的默认配置通常已经足够好。但是,如果需要,我们可以添加这些配置选项。 (3)使用cursor.close()和cnx.close()来确保游标和连接都被正确关闭。 (4)mysql-connector-python也支持使用上下文管理器(即with语句)来自动管理游标和连接的关闭,但这需要创建一个
|
18天前
|
SQL 关系型数据库 MySQL
老程序员分享:MySQL性能调优的方法
老程序员分享:MySQL性能调优的方法
13 0
|
18天前
|
关系型数据库 MySQL 数据库
更简单的向mysql数据库插入当前时间的方法
更简单的向mysql数据库插入当前时间的方法
11 0
|
23天前
|
关系型数据库 MySQL 数据库
mysql之日期时间函数
SELECT SECOND('12:45:31'); -- 结果: 31 请注意,以上结果取决于实际查询执行的时间和日期。在实际的数据库操作中,通常会使用列名作为参数,而不是直接使用硬编码的日期或时间值。例如: SELECT YEAR(birthdate) FROM employees; 这将返回 employees 表中每位员工的 birthdate 列的年份。日期和时间函数在处理数据时非常有用,特别是当你需要对日期和时间进行操作或计算时。 ————————————————
17 0
|
1月前
|
存储 关系型数据库 MySQL
MySQL 日期表制作
MySQL 日期表制作
18 0