在MySQL中,日期和时间的格式化是一个常见的需求,用于满足特定的显示或处理要求。MySQL提供了DATE_FORMAT()函数来实现这一功能。DATE_FORMAT()函数允许你根据指定的格式字符串来格式化日期或时间值。
基本语法
DATE_FORMAT(date, format)
- date:要格式化的日期或时间值。
- format:定义输出格式的字符串。
格式化字符
format字符串可以包含各种格式化字符,这些字符定义了日期和时间的显示方式。以下是一些常用的格式化字符:
- %Y:四位数的年份(例如,2023)。
- %y:两位数的年份(例如,23)。
- %m:月份(01-12)。
- %d:月份中的天数(00-31)。
- %H:小时(00-23)。
- %i:分钟(00-59)。
- %s:秒(00-59)。
- %W:星期的名称(例如,Sunday)。
- %l(小写L):星期几的名称(缩写,例如,Sun)。
- %M:月份的名称(例如,January)。
- %b:月份的名称(缩写,例如,Jan)。
- %D:带有英文后缀的月份中的天数(例如,01st, 02nd, 03rd, ...)。
- %r:时间,12小时制(例如,11:11:06 AM)。
- %T:时间,24小时制(例如,11:11:06)。
- %p:AM或PM。
示例
假设我们有一个名为events的表,其中有一个名为event_date的列,类型为DATETIME,包含了一些事件的日期和时间。
示例1:格式化日期为“年-月-日”
SELECT DATE_FORMAT(event_date, '%Y-%m-%d') AS formatted_date FROM events;
示例2:格式化日期时间为“年-月-日 时:分:秒”
SELECT DATE_FORMAT(event_date, '%Y-%m-%d %H:%i:%s') AS formatted_datetime FROM events;
示例3:获取星期的名称和日期
SELECT DATE_FORMAT(event_date, '%W, %Y-%m-%d') AS week_day_and_date FROM events;
示例4:使用12小时制显示时间
SELECT DATE_FORMAT(event_date, '%l:%i %p') AS time_12hr FROM events;
注意事项
- 格式化字符是大小写敏感的。例如,%Y(大写)表示四位数的年份,而%y(小写)表示两位数的年份。
- 如果date值为NULL,则DATE_FORMAT()函数也会返回NULL。
- 格式化后的字符串类型通常是VARCHAR或CHAR,这取决于你的应用场景和数据库设置。
通过灵活运用DATE_FORMAT()函数及其格式化字符,你可以轻松地对MySQL中的日期和时间进行各种自定义格式化。