MySQL DATE_FORMAT() 函数日期转字符串格式详解

小鹿同学
小鹿同学
发布时间:2026-10-16| 6人浏览过
原创

在使用 MySQL 进行报表开发或数据处理时,经常需要将原始时间戳或 DATE/DATETIME 类型转换为特定的可读字符串格式。本文将详细介绍如何使用 DATE_FORMAT() 函数,解析关键格式符,并通过多个实际 SQL 示例展示如何实现常见的日期字符串转换。

结果与目标

通过本教程,你将掌握在 SQL 查询中将日期值灵活格式化为不同字符串样式的方法,满足报表导出、日志查看等业务场景需求。

准备条件

  • 已安装并运行 MySQL 数据库服务。
  • 拥有至少一张包含日期字段(DATE, DATETIME, TIMESTAMP)的表,或能使用内置函数 NOW() 进行测试。

DATE_FORMAT() 函数核心原理

DATE_FORMAT(date, format) 是 MySQL 中用于格式化日期的标准函数。它接受两个参数:

  1. date:需要进行格式化的日期或时间表达式。
  2. 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 日期格式化技巧的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。