0
点赞
收藏
分享

微信扫一扫

【MySQL】DATE_FORMAT函数

yeamy 06-19 09:00 阅读 16

一、基础作用

日期/时间类型数据,按照想要的格式转换成字符串 。比如把 2025-06-19 08:49:00 变成 2025年06月19日 08时49分 这类自定义格式,方便前端展示或数据导出。

二、语法结构

DATE_FORMAT(日期字段/日期值, '格式化模板')

  • 日期字段/日期值:可以是 NOW()(当前时间)、表中 DATETIME/DATE 类型字段(如 order_time)。
  • 格式化模板:用 % 开头的占位符组合,定义最终字符串样式(下面会列常用占位符)。

三、常用占位符(重点记这些!)

占位符

含义

示例(以 2025-06-19 08:49:10 为例)

%Y

四位年份

2025

%y

两位年份(25 代替 2025

25

%m

两位月份(补零,06 月)

06

%c

月份(不补零,6 月)

6

%d

两位日期(补零,19 日)

19

%H

24 小时制小时(08 点)

08

%h

12 小时制小时(08 点,区分 AM/PM 时用)

08

%i

分钟(补零,49 分)

49

%s

秒(补零,10 秒)

10

%W

星期全称(Wednesday

Wednesday

%a

星期简称(Wed

Wed

四、实战示例

假设表 orders 有字段 order_time(类型 DATETIME),存了下单时间,需求是格式化展示:

1. 基础用法:转成「年-月-日 时:分:秒」

SELECT 
  order_time,
  DATE_FORMAT(order_time, '%Y-%m-%d %H:%i:%s') AS formatted_time  
FROM orders;

结果类似:

order_time

formatted_time

2025-06-19 08:49:10

2025-06-19 08:49:10

2. 自定义格式:「xx年xx月xx日 星期x xx点xx分」

SELECT 
  order_time,
  DATE_FORMAT(
    order_time, 
    '%Y年%m月%d日 星期%a %H点%i分'
  ) AS chinese_format  
FROM orders;

结果:

order_time

chinese_format

2025-06-19 08:49:10

2025年06月19日 星期Wed 08点49分

3. 配合 NOW() 用:格式化当前时间

SELECT 
  DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') AS current_time;

结果(随当前时间变化):
2025-06-19 08:50:30

五、常见场景

  1. 报表展示:把数据库里的时间转成用户易读的格式(如「2025/06/19 08:50」)。
  2. 数据导出:Excel 或 CSV 里的时间统一格式,避免不同时区/数据库的显示差异。
  3. 条件查询:结合 STR_TO_DATE(反向,字符串转日期),比如按自定义格式的时间范围查数据。

六、注意点

  • 占位符必须用 英文半角符号,别写成中文百分号,否则会报错。
  • 模板里的非占位符内容(如 文字),会原封不动拼到结果里,自由发挥空间大~
举报

相关推荐

0 条评论