MySQL的date_format()和str_to_date()用法详解
MySQL的date_format()和str_to_date()用法详解
DATE_FORMAT() 和 STR_TO_DATE() 是 MySQL 中用于处理日期和时间格式的重要函数,下面为你详细介绍它们的用法。DATE_FORMAT() 函数
功能
DATE_FORMAT() 函数用于将日期或时间值按照指定的格式进行格式化,将其转换为字符串。语法
DATE_FORMAT(date, format)
date:需要进行格式化的日期或时间值,可以是DATE、DATETIME、TIMESTAMP类型的列或常量。format:指定的日期和时间格式,使用特定的格式字符来表示不同的日期和时间部分。
常用格式字符
| 格式字符 | 描述 |
|---|---|
%Y |
四位年份(如 2024) |
%y |
两位年份(如 24) |
%m |
两位月份(01 - 12) |
%c |
月份(1 - 12) |
%d |
两位日期(01 - 31) |
%e |
日期(1 - 31) |
%H |
24 小时制的小时(00 - 23) |
%h |
12 小时制的小时(01 - 12) |
%i |
分钟(00 - 59) |
%s |
秒(00 - 59) |
%p |
AM 或 PM |
示例
-- 假设存在一个 orders 表,包含 order_date 字段,类型为 DATETIME
-- 1. 将日期格式化为 'YYYY-MM-DD'
SELECT DATE_FORMAT(order_date, '%Y-%m-%d') AS formatted_date
FROM orders;
-- 2. 将日期和时间格式化为 'YYYY-MM-DD HH:MM:SS'
SELECT DATE_FORMAT(order_date, '%Y-%m-%d %H:%i:%s') AS formatted_datetime
FROM orders;
-- 3. 将日期格式化为 'Month DD, YYYY' (如 January 01, 2024)
SELECT DATE_FORMAT(order_date, '%M %d, %Y') AS formatted_date
FROM orders;
STR_TO_DATE() 函数
功能
STR_TO_DATE() 函数用于将字符串按照指定的格式转换为日期或时间值。语法
STR_TO_DATE(str, format)
str:需要进行转换的字符串。format:指定的日期和时间格式,使用与DATE_FORMAT()相同的格式字符。
示例
-- 1. 将 '2024-01-01' 格式的字符串转换为日期
SELECT STR_TO_DATE('2024-01-01', '%Y-%m-%d') AS converted_date;
-- 2. 将 '2024-01-01 12:30:00' 格式的字符串转换为日期时间
SELECT STR_TO_DATE('2024-01-01 12:30:00', '%Y-%m-%d %H:%i:%s') AS converted_datetime;
-- 3. 假设存在一个表 events,包含 event_date_str 字段,类型为 VARCHAR,存储格式为 'MM/DD/YYYY'
-- 将该字段转换为日期类型
SELECT STR_TO_DATE(event_date_str, '%m/%d/%Y') AS event_date
FROM events;
注意事项
- 格式匹配:在使用
DATE_FORMAT()和STR_TO_DATE()函数时,要确保格式字符与实际的日期或字符串格式相匹配,否则可能会得到错误的结果。 - 空值处理:如果输入的日期或字符串为
NULL,则函数返回NULL。 - 性能影响:在进行大量数据的日期格式化或转换时,可能会对性能产生一定的影响,尤其是在使用复杂的格式时。可以考虑在应用层进行日期和时间的处理,以减轻数据库的负担。
浙公网安备 33010602011771号