MySQL DATE_FORMAT() 函数日期转字符串格式详解
在使用 MySQL 进行报表开发或数据处理时,经常需要将原始时间戳或 DATE/DATETIME 类型转换为特定的可读字符串格式。本文将详细介绍如何使用 DATE_FORMAT() 函数,解析关键格式符,并通过多个实际 SQL 示例展示如何实现常见的日期字符串转换。
结果与目标
通过本教程,你将掌握在 SQL 查询中将日期值灵活格式化为不同字符串样式的方法,满足报表导出、日志查看等业务场景需求。
准备条件
- 已安装并运行 MySQL 数据库服务。
- 拥有至少一张包含日期字段(
DATE,DATETIME,TIMESTAMP)的表,或能使用内置函数NOW()进行测试。
DATE_FORMAT() 函数核心原理
DATE_FORMAT(date, format) 是 MySQL 中用于格式化日期的标准函数。它接受两个参数:
- date:需要进行格式化的日期或时间表达式。
- format:由预定义说明符组成的格式字符串。每个说明符前必须添加百分号
%。
第1步:理解常用格式说明符
虽然 MySQL 支持多达数十种说明符,但在日常开发中,以下是最核心的几组:
- 年份:
%Y(4位,如 2023),%y(2位,如 23)。 - 月份:
%m(数字,补零,01-12),%M(全称,如 January),%b(缩写,如 Jan)。 - 日期:
%d(数字,补零,01-31),%e(数字,不补零,1-31)。 - 时间:
%H(24小时制,补零),%h(12小时制,补零),%i(分钟,补零),%s/%S(秒,补零)。 - 其他:
%W(星期全称),%w(星期数字,0=周日)。
以下是一些高频使用的组合及其输出效果对照:
| 格式字符串 | 示例输出 |
|---|---|
%Y-%m-%d |
2022-04-26 |
%Y/%m/%d |
2022/04/26 |
%Y-%m-%d %H:%i:%s |
2022-04-26 17:29:30 |
%b %d %Y %h:%i %p |
Apr 26 2022 05:28 PM |
真实操作顺序:格式化示例演示
为了直观展示不同参数的作用,以下示例均以 MySQL 内置函数 NOW() 作为测试数据源,并结合用户表查询逻辑进行演示。请根据实际环境替换表名和字段。
第1步:格式化年月日(带分隔符 / )
目的:生成类似 2022/04/26 的格式,月份和日期不足两位时自动补零。
SELECT DATE_FORMAT(NOW(), '%Y/%m/%d') AS now_time;
第2步:格式化年月日(带分隔符 - )
目的:生成 ISO 8601 风格或常见日志风格的日期 2022-04-26。
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d') AS now_time;
第3步:无补零的日月年格式
目的:使用 %e 和 %c 去除前导零,显示为 6/4/2022 形式,更紧凑。
SELECT DATE_FORMAT(NOW(), '%e/%c/%Y') AS now_time;
第4步:精确到分钟的完整日期时间
目的:结合日期与时间,显示为 26/04/2022 17:29 格式。
SELECT DATE_FORMAT(NOW(), '%d/%m/%Y %H:%i') AS now_time;
第5步:英文缩写与12小时制时间
目的:生成更具可读性的自然语言风格,如 Apr 26 2022 05:29 PM。
SELECT DATE_FORMAT(NOW(), '%b %d %Y %h:%i %p') AS now_time;
第6步:包含微秒的时间精度
目的:适用于需要高精度日志记录的场景,输出 2022-04-26 17:29:30.000000。
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %T:%f') AS now_time;
第7步:全称星期与月份的自然表达
目的:生成如 Tuesday 26th April 2022 17:29:30 的详细报告格式。
SELECT DATE_FORMAT(NOW(), '%W %D %M %Y %T') AS now_time;
完成判断
执行上述 SQL 语句后,若返回列 now_time 中的字符串内容与预期的格式描述一致(例如分隔符正确、补零符合预期、大小写符合要求),则说明 DATE_FORMAT() 函数应用成功。
简要总结
MySQL 的 DATE_FORMAT() 提供了极强的灵活性来应对多样化的报表输出需求。虽然官方文档列出了数十种格式符,但熟练掌握 %Y/%m/%d、%H:%i:%s 以及大小月/日的区别,即可覆盖 90% 以上的日常开发场景。在实际编写 SQL 时,建议先在命令行或工具中预览 NOW() 的输出效果,再将其应用于具体业务表中。
以上就是 MySQL 中 DATE_FORMAT() 函数将 Date 转为字符串的详细内容,更多关于 MySQL 日期格式化技巧的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









