likes
comments
collection
share

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

作者站长头像
站长
· 阅读数 39

前言

  上一章回顾复习了一下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()

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

DATE()

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

SELECT goods_name,DATE(create_time) FROM goods

执行结果如下:

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

EXTRACT()

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

SELECT goods_name,EXTRACT( MONTH FROM  create_time) FROM goods

MySQL中常用的日期处理方法总结   其中指定的时间单位和测试如下: 时间以商品表中商品id为1的商品的创建时间为标准表达式进行测试。执行SQL如下:

SELECT EXTRACT( 时间单位格式 FROM  create_time) FROM goods WHERE id =1
时间单位格式描述标准时间表达式执行结果值
MICROSECOND微秒2021-11-24 23:19:540
SECOND2021-11-24 23:19:5454
MINUTE分钟2021-11-24 23:19:5419
HOUR小时2021-11-24 23:19:5423
DAY天数2021-11-24 23:19:5424
WEEK星期2021-11-24 23:19:5447
MONTH月份2021-11-24 23:19:5411
QUARTER季度2021-11-24 23:19:544
YEAR年份2021-11-24 23:19:542021
SECOND_MICROSECOND秒到微秒级别2021-11-24 23:19:5454000000
MINUTE_MICROSECOND分钟到微秒级别2021-11-24 23:19:541954000000
MINUTE_SECOND分钟到秒级别2021-11-24 23:19:541954
HOUR_MICROSECOND小时到微妙2021-11-24 23:19:54231954000000
HOUR_SECOND小时和秒2021-11-24 23:19:54231954
HOUR_MINUTE小时和分钟2021-11-24 23:19:542319
DAY_MICROSECOND天到微妙级别2021-11-24 23:19:5424231954000000
DAY_SECOND天到秒级别2021-11-24 23:19:5424231954
DAY_MINUTE天到分钟级别2021-11-24 23:19:54242319
DAY_HOUR天到小时级别2021-11-24 23:19:542423
YEAR_MONTH年月2021-11-24 23:19:54202111

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,如下图:

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

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,如下图:

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

DATEDIFF()

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

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

其执行结果是:

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

DATE_FORMAT()

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

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

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

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

执行结果截图如下:

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

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

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

结语

  好了,以上就是MySQL中常用的日期处理方法总结,感谢您的阅读,希望您喜欢,如对您有帮助,欢迎点赞收藏。如有不足之处,欢迎评论指正。下次见。

  作者介绍:【小阿杰】一个爱鼓捣的程序猿,JAVA开发者和爱好者。公众号【Java全栈架构师】维护者,欢迎关注阅读交流。

转载自:https://juejin.cn/post/7034887169923612685
评论
请登录