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:需要进行格式化的日期或时间值,可以是 DATEDATETIMETIMESTAMP 类型的列或常量。
  • 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
  • 性能影响:在进行大量数据的日期格式化或转换时,可能会对性能产生一定的影响,尤其是在使用复杂的格式时。可以考虑在应用层进行日期和时间的处理,以减轻数据库的负担。

posted on 2025-04-23 11:19  数据库那些事儿  阅读(2020)  评论(0)    收藏  举报