MYSQL DATA_FORMAT函数

本文详细介绍了 MySQL 中的 DATE_FORMAT() 函数,该函数允许用户以多种格式展示日期和时间数据。通过不同的格式参数,可以实现从年、月、日到小时、分钟、秒的精确格式化。

原文:https://blog.youkuaiyun.com/debimeng/article/details/80163652 

mysql DATE_FORMAT()函数

DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。

语法:DATE_FORMAT(date,format)

date 参数是合法的日期;format 规定日期/时间的输出格式。

可使用的格式:
格式     描述
%a        缩写星期名
%b        缩写月名
%c        月,数值
%D        带有英文前缀的月中的天
%d        月的天,数值(00-31)
%e        月的天,数值(0-31)
%f        微秒
%H        小时 (00-23)
%h        小时 (01-12)
%I        小时 (01-12)
%i        分钟,数值(00-59)
%j        年的天 (001-366)
%k        小时 (0-23)
%l        小时 (1-12)
%M        月名
%m        月,数值(00-12)
%p        AM 或 PM
%r        时间,12-小时(hh:mm:ss AM 或 PM)
%S        秒(00-59)
%s        秒(00-59)
%T        时间, 24-小时 (hh:mm:ss)
%U        周 (00-53) 星期日是一周的第一天
%u        周 (00-53) 星期一是一周的第一天
%V        周 (01-53) 星期日是一周的第一天,与 %X 使用
%v        周 (01-53) 星期一是一周的第一天,与 %x 使用
%W        星期名
%w        周的天 (0=星期日, 6=星期六)
%X        年,其中的星期日是周的第一天,4 位,与 %V 使用
%x        年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y        年,4 位
%y        年,2 位

常用格式:
DATE_FORMAT(create_time,'%c月%d日')                --->如:5月01日
DATE_FORMAT(create_time,'%Y年%c月%d日')            --->如:2018年5月01日
DATE_FORMAT(create_time,'%Y-%c-%d')                --->如:2018-5-01
--------------------- 
 

MySQL 中的 `DATE_FORMAT()` 函数用于将日期或时间字段按照指定格式进行格式化输出,常用于日期显示格式的调整,以满足业务需求或用户界面要求。该函数支持丰富的格式化参数,能够灵活地控制输出结果。 例如,若需以 `YYYY-MM-DD HH:MM:SS` 的格式显示日期时间字段,可以使用以下 SQL 语句: ```sql SELECT id, name, DATE_FORMAT(start_time, '%Y-%m-%d %H:%i:%S') AS start_time, DATE_FORMAT(end_time, '%Y-%m-%d %H:%i:%S') AS end_time FROM user; ``` 此外,还可以根据需要分别提取日期中的年、月、日部分,或仅显示时间信息。例如,从 `created_at` 字段中提取日期部分,从 `updated_at` 字段中提取时间部分: ```sql SELECT id, DATE_FORMAT(created_at, '%Y-%m-%d') AS create_date, DATE_FORMAT(updated_at, '%H:%i:%s') AS update_time FROM users; ``` 对于更复杂的场景,例如根据条件格式化日期字段,也可以结合 `CASE` 语句使用 `DATE_FORMAT()` 函数,实现更加灵活的查询逻辑。 ### 格式化参数说明 - `%Y`:四位数的年份(如 2024) - `%y`:两位数的年份(如 24) - `%m`:两位数的月份(01-12) - `%c`:月份,数值(1-12) - `%d`:月份中的天数,两位数(01-31) - `%e`:月份中的天数,数值(1-31) - `%H`:小时(00-23) - `%h`:小时(01-12) - `%i`:分钟(00-59) - `%S`:秒(00-59) - `%W`:完整的星期名称(如 Monday) - `%w`:一周中的第几天(0=Sunday, 6=Saturday) ### 示例:提取星期信息 若需获取某日期字段对应的完整星期名称,可以使用如下语句: ```sql SELECT id, DATE_FORMAT(order_date, '%W') AS order_day FROM orders; ``` 此语句将返回订单日期对应的星期名称,如 `Monday`[^1]。 ### 示例:带条件的格式化 在某些情况下,可能需要根据特定条件对日期进行格式化。例如,仅在某时间段内格式化日期: ```sql SELECT id, CASE WHEN status = 'active' THEN DATE_FORMAT(created_at, '%Y-%m-%d') ELSE 'Inactive' END AS formatted_date FROM accounts; ``` 此查询将仅对状态为 `active` 的账户格式化其创建日期,其他账户则显示为 `Inactive`[^2]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值