Skip to content

DATE_FORMAT日期格式化函数


在实际开发中,我们经常需要对日期或时间进行格式化输出,比如把 2025-09-09 14:05:09 格式化成 2025-09-092025年09月09日 14:05:092025-09。在 MySQL 中,DATE_FORMAT 就是专门用来做日期格式化的函数。

DATE_FORMAT(date, format)
  • date:要格式化的日期或时间值(可以是常量、字段、函数如 NOW())。

  • format:格式化字符串,由一系列以 % 开头的格式符组成。

它和 Java 里的 SimpleDateFormat 用法类似。

格式符含义示例
%Y四位年份2025
%y两位年份25
%m月份(01-12,补零)09
%c月份(1-12,不补零)9
%d日(01-31,补零)09
%e日(1-31,不补零)9
%H小时(00-23)14
%h / %I小时(01-12,12小时制)02
%i分钟(00-59)05
%s秒(00-59)09
%W星期几(英文全称)Tuesday
%a星期几(英文缩写)Tue
%M月份(英文全称)September
%b月份(英文缩写)Sep
-- 格式化为 年-月-日
SELECT DATE_FORMAT('2025-09-09 14:05:09', '%Y-%m-%d');
-- 结果:2025-09-09
-- 格式化为 中文常见格式
SELECT DATE_FORMAT('2025-09-09 14:05:09', '%Y年%m月%d日 %H点%i分%s秒');
-- 结果:2025年09月09日 14点05分09秒
-- 只取年月
SELECT DATE_FORMAT('2025-09-09', '%Y-%m');
-- 结果:2025-09
-- 只取星期
SELECT DATE_FORMAT('2025-09-09', '%W');
-- 结果:Tuesday
  • 报表分组统计

很多时候我们需要按 进行数据汇总,这时就需要用 DATE_FORMAT 来统一日期格式。

-- 按月统计订单数量
SELECT DATE_FORMAT(created_time, '%Y-%m') AS month, COUNT(*) AS total
FROM orders
GROUP BY month;
  • 格式化展示

前端有时候不直接处理日期格式,而是要求后端 SQL 返回指定格式的字符串。

SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日 %H:%i:%s') AS now_chinese;

结果:

2025年09月09日 17:05:09
  • 数据清洗

数据库里的日期字段可能是 DATETIME 类型,但在做 ETL 或导出时需要特定格式。

SELECT DATE_FORMAT(created_time, '%Y-%m-%d') AS order_date
FROM orders;
  • DATE_FORMAT 是 MySQL 的日期格式化函数。

  • 常用来做 展示、分组、报表统计、数据清洗

  • 格式化符类似 Java SimpleDateFormat,需要记住常用的几个 %Y %m %d %H %i %s