当前位置: 首页 > news >正文

「MySQL」日期时间格式化函数 DATE_FORMAT() 的使用详解

目录

一、DATE_FORMAT()语法

二、格式化字符串详解

三、常见日期时间格式组合

四、业务场景

五、总结


一、DATE_FORMAT()语法

DATE_FORMAT()是MySQL中用于格式化日期时间的函数:

语法DATE_FORMAT(date, format_string)

  • date:需要格式化的日期化时间值,一般是需要被格式化的日期时间类型(datetime类),但也可以是日期时间形式的字符串

  • format_string:格式化字符串,用于指定日期时间的格式化输出形式

注1:MySQL允许你对具体的日期时间格式的字符串进行格式化,但其他数据库的格式化函数不一定支持,比如Clickhouse的formatDateTime()注2:MySQL对字符串进行格式化时,日期时间的格式并不固定,你可以用很多特殊字符隔开日期时间,比如:/*-<等,但不能是空格,MySQL会按照YY MM DD HH MM SS的顺序识别字符串中的数字

– 比如下列SQl语句的执行结果相同,都是 “2024,December,31st”

SELECT DATE_FORMAT( ‘24-12-31’, ‘%Y,%M,%D’) AS format_date

SELECT DATE_FORMAT( ‘2024-12-31’, ‘%Y,%M,%D’) AS format_date

SELECT DATE_FORMAT( ‘2024/12/31’, ‘%Y,%M,%D’) AS format_date

SELECT DATE_FORMAT( ‘2024*12*31’, ‘%Y,%M,%D’) AS format_date

SELECT DATE_FORMAT( ‘24<<12<<31’, ‘%Y,%M,%D’) AS format_date

– 但如果使用空格间隔,会执行失败,但不会报错,输出结果为NULL

SELECT DATE_FORMAT( ‘24 12 31’, ‘%Y,%M,%D’) AS format_date

二、格式化字符串详解

格式

含义

%Y

年份:4位数字表示,eg: 2024

%y

年份:2位数字表示,eg: 24

%M

月份:英文全拼表示,eg: June

%m

月份:2位数字表示,范围01-12,eg: 06

%D

天数:两位数字表示,范围01-31,eg: 15

%d

天数:英文第几天表示,范围 1st-31th,eg: 1st, 2nd, 3rd, 15th

%H

小时:两位数字表示,范围00-23,eg: 23

%i

分钟:两位数字表示,范围00-59,eg: 59

%S OR %s

秒钟:两位数字表示,范围00-59,eg: 16

%W

星期:英文全拼表示,eg: Saturday

%w

星期:1位数字表示,eg: 6

%T

完全时间格式,相当于 %H:%i%s 或 %H:%i:%S,范围00:00:00-23:59:59,eg: 15:30:36

注3:大小写形式%I 和%t无意义

三、常见日期时间格式组合

常见的日期时间格式化形式基本上就是如下几种:%Y,%M,%D%Y-%m-%d %H:%i:%s%Y/%m/%d%W,%M,%D

  • SQL语句

SELECT ‘%Y-%m-%d %H:%i:%s’ AS format, DATE_FORMAT( ‘2024-12-31 23:48:59’,‘%Y-%m-%d %H:%i:%s’) AS format_date UNION ALL

SELECT ‘%Y,%M,%D’ AS format, DATE_FORMAT( ‘2024-12-31 23:48:59’,‘%Y,%M,%D’) AS format_date UNION ALL

SELECT ‘%W,%M,%D’ AS format, DATE_FORMAT( ‘2024-12-31 23:48:59’,‘%W,%M,%D’) AS format_date UNION ALL

SELECT ‘%y/%m/%d’ AS format, DATE_FORMAT( ‘2024-12-31 23:48:59’,‘%y/%m/%d’) AS format_date UNION ALL

SELECT ‘%H:%i:%s’ AS format, DATE_FORMAT( ‘2024-12-31 23:48:59’,‘%H:%i:%s’) AS format_date UNION ALL

SELECT ‘%H:%i:%S’ AS format, DATE_FORMAT( ‘2024-12-31 23:48:59’,‘%H:%i:%S’) AS format_date UNION ALL

SELECT ‘%T’ AS format, DATE_FORMAT( ‘2024-12-31 23:48:59’,‘%T’) AS format_date UNION ALL

SELECT ‘%w,%m-%d’ AS format, DATE_FORMAT( ‘2024-12-31 23:48:59’,‘%w,%m-%d’) AS format_date UNION ALL

SELECT ‘------’ AS format, ‘--------------’ AS format_date UNION ALL

SELECT ‘%H:%I:%s’ AS format, DATE_FORMAT( ‘2024-12-31 23:48:59’,‘%H:%I:%s’) AS format_date UNION ALL

SELECT ‘%t’ AS format, DATE_FORMAT( ‘2024-12-31 23:48:59’,‘%t’) AS format_date

  • 执行结果

四、业务场景

在实际的业务应用如报表导出、界面显示、数据分析等,该函数通常用于输出特定格式的日期或时间,当然,DATE_FORMAT()允许你自定义输出格式,只要你定义好格式化字符串即可。

SELECT DATE_FORMAT(startTime,‘%Y-%m’) AS startTime

FROM tableA

WHERE column1 = ‘option1’

五、总结

DATE_FORMAT()是MySQL中用于格式化输出日期时间的函数,我们可以通过使用该函数满足大多数格式化日期时间的应用场景,本文的示例展示了如何获取当前日期和时间并将其格式化为一个常见的格式,您可以根据需要调整格式字符串来满足您的具体需求。 但需要注意的是,不同的数据库系统可能支持不同的格式字符串,所以在使用时需要参考相应数据库的文档来确定正确的格式字符串。

http://www.jsqmd.com/news/454090/

相关文章:

  • 计及条件风险价值的电气综合能源系统能量 - 备用分布鲁棒优化
  • 计算机网络总结---基础
  • 一天一个Python库:pyarrow - 大规模数据处理的利器
  • MATLAB 实现基于萤火虫改进的麻雀搜索算法SSA
  • 深入理解Kafka:Java后端开发必备的消息队列技术
  • 题解 - P15434 [蓝桥杯 2025 国 Python B] 三角形构造
  • 2026年 Elmo国产化伺服驱动器推荐榜单:高功率密度/微型/高端/军工/半导体/关节模组专用,全国产化低压伺服驱动器实力厂家精选 - 品牌企业推荐师(官方)
  • 算法简史!
  • 一篇速通java线程池,看完直接上手用!
  • VMWare安装Centos 8系统
  • 2026年投票小程序开发指南:北京定制化技术服务商深度解析 - 品牌2026
  • Java面试实战:从Spring Boot到微服务架构的循序渐进问答
  • Vue——小白也能学!Day2
  • 智能软开关在配电网重构中的Matlab实践:基于二阶锥规划
  • 好用的监控塔品牌推荐,安徽佳旭钢结构上榜吗? - mypinpai
  • 阻抗分析仪与矢量网络分析仪在阻抗测量中的对比分析
  • 探索 Lumerical - FDTD 软件在光子学领域的奇妙之旅
  • 微算法科技(NASDAQ:MLGO)量子PBFT改进技术:重构联盟链共识的效率与安全
  • 【golang学习之旅】使用VScode安装配置Go开发环境
  • LangChain4j 和 Spring AI,哪个更好?
  • 【Linux】nmcli命令详解
  • 使用FydeOS v22.0系统,想要写代码,在用VS Code编辑仓库内的文件要保存时忽然蹦出:No polkit authentication agent found...如何解决?
  • 双相锁相放大器与单相锁相放大器的区别
  • 2026技术坟墓:Kubernetes的替代者现身——软件测试从业者的专业指南
  • 车辆位姿的含义
  • 2026年磁力泵厂家推荐排行榜:可空载/高温/保温/夹套/分体式/管道/自吸/不锈钢/衬氟/塑料/漩涡/齿轮/多级/船用/液下泵专业选购指南 - 品牌企业推荐师(官方)
  • 车道线检测:基于Matlab的有趣之旅
  • 牛客网金三银四最新Java面试汇总(全网最全、最细、附答案)
  • 黑客都在用的逆向工程“兵器库”:IDA Pro、Ghidra、x64dbg实战演练
  • 如何使用斯坦福锁相放大器SR860测量材料电阻率