DATE_FORMAT日期格式化函数
在实际开发中,我们经常需要对日期或时间进行格式化输出,比如把 2025-09-09 14:05:09 格式化成 2025-09-09、2025年09月09日 14:05:09 或 2025-09。在 MySQL 中,DATE_FORMAT 就是专门用来做日期格式化的函数。
1. 基本语法
Section titled “1. 基本语法”DATE_FORMAT(date, format)-
date:要格式化的日期或时间值(可以是常量、字段、函数如
NOW())。 -
format:格式化字符串,由一系列以
%开头的格式符组成。
它和 Java 里的
SimpleDateFormat用法类似。
2. 常用格式化符号
Section titled “2. 常用格式化符号”| 格式符 | 含义 | 示例 |
|---|---|---|
%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');-- 结果:Tuesday4. 应用场景
Section titled “4. 应用场景”- 报表分组统计
很多时候我们需要按 月 或 日 进行数据汇总,这时就需要用 DATE_FORMAT 来统一日期格式。
-- 按月统计订单数量SELECT DATE_FORMAT(created_time, '%Y-%m') AS month, COUNT(*) AS totalFROM ordersGROUP 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_dateFROM orders;-
DATE_FORMAT是 MySQL 的日期格式化函数。 -
常用来做 展示、分组、报表统计、数据清洗。
-
格式化符类似 Java
SimpleDateFormat,需要记住常用的几个%Y %m %d %H %i %s。