MySQL中无直接格式化命令,但可用DATE_FORMAT()函数将日期转为指定格式字符串,如DATE_FORMAT(created_at, '%Y-%m-%d')返回'2024-03-15',返回值为字符串且不可参与日期计算。

MySQL 中没有直接的“格式化日期显示”命令,但可通过 DATE_FORMAT() 函数将日期时间值按指定格式转为字符串,用于查询结果展示、日志输出或前端适配。
DATE_FORMAT() 基本用法
语法:DATE_FORMAT(date, format),其中 date 是合法的日期/日期时间表达式(如 NOW()、字段名、'2024-03-15'),format 是由特定占位符组成的格式字符串。
- 返回值是字符串类型,不是日期类型,不能再直接参与日期计算
- 若 date 为 NULL 或格式非法,函数返回 NULL
- 常见格式符示例:%Y(4位年)、%m(01–12)、%d(01–31)、%H(24小时制时)、%i(分钟)、%s(秒)
常用日期格式示例
假设表中有字段 created_at DATETIME,值为 '2024-03-15 14:28:09':
- DATE_FORMAT(created_at, '%Y-%m-%d') → '2024-03-15'
- DATE_FORMAT(created_at, '%Y年%m月%d日 %H:%i') → '2024年03月15日 14:28'
- DATE_FORMAT(created_at, '%b %e, %Y at %l:%i %p') → 'Mar 15, 2024 at 2:28 PM'(%b 英文缩写,%e 日无前导零,%l 12小时制,%p AM/PM)
配合查询与条件使用的注意事项
DATE_FORMAT() 仅用于格式化输出,不能替代日期比较逻辑:
- ✅ 正确:查询 2024 年 3 月的数据 → WHERE created_at >= '2024-03-01' AND created_at
- ❌ 错误(性能差且无法走索引)→ WHERE DATE_FORMAT(created_at, '%Y-%m') = '2024-03'
- 如需按年月分组统计,可用 GROUP BY YEAR(created_at), MONTH(created_at) 或 GROUP BY DATE_FORMAT(created_at, '%Y-%m')(后者会隐式转字符串,小数据量可接受)
其他相关函数补充
除 DATE_FORMAT 外,MySQL 还提供轻量级格式化方式:
- YEAR(), MONTH(), DAY(), HOUR(), MINUTE(), SECOND():提取单个部分,返回整数
- DATE():只取日期部分(去掉时间),返回 DATE 类型
- TIME():只取时间部分,返回 TIME 类型
- 需要中文星期或自定义名称?需结合 CASE WHEN 或应用层处理,MySQL 原生不支持本地化 weekday 名称










