首页/数据/SQL 速查/DATE_FORMAT 与 to_char 格式化
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条
函数速查60 条
变更与事务52 条性能与执行计划72 条

DATE_FORMAT 与 to_char 格式化

把日期时间格式化为字符串:MySQL 用 % 占位符,PostgreSQL 用 to_char 模板;两者模板字母含义不同,迁移时逐项核对。

SQL 速查数据更新于 2026-10-12

MySQL

MySQL
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');  -- 2024-06-01 09:30:05
SELECT DATE_FORMAT(d, '%Y%m') FROM t;             -- 202406
-- %i 是分钟、%s 是秒(大写 %M 是月份英文名)

PostgreSQL

PostgreSQL
SELECT to_char(now(), 'YYYY-MM-DD HH24:MI:SS'); -- 2024-06-01 09:30:05
SELECT to_char(d, 'YYYYMM') FROM t;               -- 202406
-- MI 是分钟,MM 是月份,注意别写反
MySQL 常用%Y 年 %m 月 %d 日 %H 时 %i 分 %s 秒 %j 年内天 %W 星期名
PostgreSQL 常用YYYY MM DD HH24 MI SS DDD Day
用途报表列、导出文件名、按天/月分组的键

易错点

  • MySQL 的 %i(分钟)与 %m(月)极易写反,输出会静默错位而不是报错
  • 对索引列写成 WHERE DATE_FORMAT(dt,'%Y-%m')='2024-06' 无法走索引,改为 dt >= '2024-06-01' AND dt < '2024-07-01'

数据来源与参考

  • MySQL 8.0 Reference Manual · DATE_FORMAT
  • PostgreSQL Documentation · Data Type Formatting Functions
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌