MySQL 日期格式化详解
日期在数据库中是一种常见的数据类型,也是开发中非常重要的一部分。在 MySQL 中,日期的存储和格式化是非常灵活和强大的。本文将详细介绍 MySQL 中的日期格式化,并提供一些常用的代码示例。
日期格式化函数
MySQL 提供了多种日期格式化函数,可以根据需求将日期以不同的格式显示出来。下面是几个常用的日期格式化函数:
DATE_FORMAT(date, format)
:将日期格式化为指定的格式。其中,date
是日期值,format
是格式化字符串。
示例代码:
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d') AS formatted_date;
结果:
formatted_date |
---|
2023-08-21 |
YEAR(date)
:获取日期的年份。
示例代码:
SELECT YEAR(NOW()) AS year;
结果:
year |
---|
2023 |
MONTH(date)
:获取日期的月份。
示例代码:
SELECT MONTH(NOW()) AS month;
结果:
month |
---|
08 |
DAY(date)
:获取日期的天。
示例代码:
SELECT DAY(NOW()) AS day;
结果:
day |
---|
21 |
HOUR(time)
:获取时间的小时。
示例代码:
SELECT HOUR(NOW()) AS hour;
结果:
hour |
---|
12 |
MINUTE(time)
:获取时间的分钟。
示例代码:
SELECT MINUTE(NOW()) AS minute;
结果:
minute |
---|
30 |
还有其他一些函数,如 SECOND(time)
(获取时间的秒)、DAYNAME(date)
(获取日期的星期几)、WEEK(date)
(获取日期属于一年中的第几周)等,根据需求选择合适的函数进行日期格式化。
日期格式化字符串
日期格式化函数中的 format
参数需要一个格式化字符串。下面是一些常用的日期格式化字符串:
%Y
:四位数的年份,如 2023;%y
:两位数的年份,如 23;%m
:两位数的月份,如 08;%c
:月份,不带前导零,如 8;%d
:两位数的日期,如 21;%e
:日期,不带前导零,如 21;%H
:24 小时制的小时,如 12;%h
:12 小时制的小时,如 10;%i
:两位数的分钟,如 30;%s
:两位数的秒数,如 45;%p
:AM 或 PM;%W
:星期几的完整名称,如 Sunday;%w
:星期几的数字表示,0 表示 Sunday;%b
:月份的缩写,如 Aug;%M
:月份的完整名称,如 August;%a
:星期几的缩写,如 Sun;%r
:时间,12 小时制,如 10:30:45 AM;%T
:时间,24 小时制,如 10:30:45;
这些格式化字符串可以根据需要组合使用,以满足不同的日期格式化需求。
示例
下面是一个示例,展示了如何使用 MySQL 的日期格式化函数将日期和时间格式化为指定的格式:
-- 创建示例表
CREATE TABLE example (
id INT PRIMARY KEY,
date_col DATE,
time_col TIME,
datetime_col DATETIME
);
-- 插入示例数据
INSERT INTO example (id, date_col, time_col, datetime_col)
VALUES (1, '2023-08-21', '12:30:45', '2023-08-21 12:30:45');
-- 查询格式化后的日期和时间
SELECT
id,
DATE_FORMAT(date_col, '%Y-%m-%d') AS formatted_date,
DATE_FORMAT(time_col, '%H:%i:%s') AS formatted_time,
DATE_FORMAT(datetime_col, '%Y-%m-%d %H:%i:%s') AS formatted_datetime
FROM
example;
结果:
| id | formatted_date | formatted_time | formatted_datetime | | --- | ------------