mysql时间格式化,灵活处理各种日期时间展示场景

时间:2025-09-19 14:27


在 MySQL 中,可以使用 DATE_FORMAT() 函数对日期和时间进行格式化,也可以使用 STR_TO_DATE() 函数将字符串转换为日期格式。

一、DATE_FORMAT() 函数(日期转字符串)

语法

sql
DATE_FORMAT(日期字段, 格式字符串)
 

常用格式符

  • %Y:四位年份(如 2023)
  • %y:两位年份(如 23)
  • %m:两位月份(01-12)
  • %d:两位日期(01-31)
  • %H:24 小时制小时(00-23)
  • %h:12 小时制小时(01-12)
  • %i:分钟(00-59)
  • %s:秒(00-59)
  • %W:星期全称(如 Sunday)
  • %a:星期缩写(如 Sun)
  • %M:月份全称(如 January)
  • %b:月份缩写(如 Jan)

示例

sql
-- 假设表中有 create_time 字段(datetime 类型)
SELECT 
  create_time AS 原始时间,
  DATE_FORMAT(create_time, '%Y-%m-%d') AS 年月日,
  DATE_FORMAT(create_time, '%Y-%m-%d %H:%i:%s') AS 年月日时分秒,
  DATE_FORMAT(create_time, '%m/%d/%Y %h:%i %p') AS 美式格式,
  DATE_FORMAT(create_time, '%W, %M %d, %Y') AS 星期月份格式
FROM 表名;
 

二、STR_TO_DATE() 函数(字符串转日期)

当需要将字符串按指定格式解析为日期类型时使用。

语法

sql
STR_TO_DATE(字符串, 格式字符串)
 

示例

sql
-- 将字符串转换为日期
SELECT 
  STR_TO_DATE('2023-10-05', '%Y-%m-%d') AS 日期,
  STR_TO_DATE('10/05/2023 14:30', '%m/%d/%Y %H:%i') AS 日期时间;

-- 插入时转换格式
INSERT INTO 表名(时间字段) 
VALUES (STR_TO_DATE('2023年10月05日', '%Y年%m月%d日'));
 

三、常用场景示例

  1. 查询特定格式的时间

sql
-- 查询今天的订单(只比较日期部分)
SELECT * FROM orders 
WHERE DATE_FORMAT(create_time, '%Y-%m-%d') = '2023-10-05';
 

  1. 按格式化后的时间分组统计

sql
-- 按月份统计订单数量
SELECT 
  DATE_FORMAT(create_time, '%Y-%m') AS 月份,
  COUNT(*) AS 订单数
FROM orders 
GROUP BY 月份
ORDER BY 月份;
 

  1. 默认日期格式转换
    MySQL 中默认的日期显示格式是 YYYY-MM-DD,时间是 HH:MM:SS,可以通过设置会话变量临时修改:

sql
-- 临时修改当前会话的日期显示格式
SET @@session.date_format = '%Y年%m月%d日';
SET @@session.time_format = '%H时%i分%s秒';
 

根据实际需求选择合适的格式符组合,可以灵活处理各种日期时间展示场景。
内网穿透工具自托管 vs 云端中转:穿云箭和花生壳优缺点深度分析
内网ip远程控制,借助内网IP实现远程控制的完整指南
远程访问内网IP:打破网络边界的连接艺术
理解Windows系统中的NAT转发功能
内网穿透工具自托管 vs 云端中转:穿云箭和花生壳优缺点分析
手把手配置SSR端口转发:UDP协议支持与高级设置详解
什么是nat123?nat123的核心功能
nat123端口映射:轻松实现外网访问内网
nat123下载:轻松获取内网穿透工具
nat123官网:老牌内网穿透工具