MySQL Convert 日期格式转换
在MySQL中,日期格式的转换是一个常见的需求,特别是在处理和展示不同格式的日期数据时。MySQL提供了一些内置函数,可以帮助我们轻松地进行日期格式的转换。本文将介绍一些常用的MySQL日期格式转换函数,并提供相关的代码示例。
DATE_FORMAT函数
DATE_FORMAT函数是MySQL中最常用的日期格式转换函数之一。它可以将日期数据按照指定的格式进行格式化。
语法:
DATE_FORMAT(date, format)
其中,date是一个日期或日期时间表达式,format是一个表示日期格式的字符串。
下表是常用的日期格式字符串及其对应的含义:
格式字符串 | 含义 |
---|---|
%Y | 年份,4位数字 |
%y | 年份,2位数字 |
%m | 月份,两位数字(01-12) |
%c | 月份,数字(1-12) |
%M | 月份,全名(January-December) |
%b | 月份,缩写(Jan-Dec) |
%d | 日期,两位数字(01-31) |
%e | 日期,数字(1-31) |
%H | 小时,24小时制,两位数字(00-23) |
%h | 小时,12小时制,两位数字(01-12) |
%i | 分钟,两位数字(00-59) |
%s | 秒,两位数字(00-59) |
%p | AM或PM |
%w | 星期,数字(0-6,0表示Sunday) |
%W | 星期,全名(Sunday-Saturday) |
下面是一个示例,将日期字段create_time
格式化为YYYY-MM-DD HH:ii:ss
的格式:
SELECT DATE_FORMAT(create_time, '%Y-%m-%d %H:%i:%s') AS formatted_time FROM my_table;
STR_TO_DATE函数
STR_TO_DATE函数是MySQL中用于将字符串转换为日期的函数。它的语法如下:
STR_TO_DATE(str, format)
其中,str是一个表示日期的字符串,format是一个表示日期格式的字符串。
下面是一个示例,将字符串'2022-12-31'
转换为日期类型:
SELECT STR_TO_DATE('2022-12-31', '%Y-%m-%d') AS converted_date;
UNIX_TIMESTAMP函数和FROM_UNIXTIME函数
UNIX_TIMESTAMP函数用于将日期时间转换为UNIX时间戳,而FROM_UNIXTIME函数则用于将UNIX时间戳转换为日期时间。
UNIX时间戳是从1970年1月1日00:00:00起经过的秒数。
下面是一个示例,将日期时间字段create_time
转换为UNIX时间戳:
SELECT UNIX_TIMESTAMP(create_time) AS unix_timestamp FROM my_table;
下面是一个示例,将UNIX时间戳1640908800
转换为日期时间:
SELECT FROM_UNIXTIME(1640908800) AS formatted_time;
示例
以下是一个完整的示例,假设我们有一个名为users
的表,其中包含一个字段birthday
表示用户的生日。
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
birthday DATE NOT NULL
);
INSERT INTO users (name, birthday) VALUES
('Alice', '1990-01-01'),
('Bob', '1995-02-02'),
('Charlie', '2000-03-03');
现在,我们想要从users
表中查询生日在2022年之前的用户,并将生日格式化为YYYY年M月D日
的形式。
SELECT name, DATE_FORMAT(birthday, '%Y年%c月%d日') AS formatted_birthday
FROM users
WHERE YEAR(birthday) <= 2022;
执行以上查询语句,将返回以下结果:
name | formatted_birthday |
---|---|
Alice | 1990年1月1日 |
Bob | 1995年2月2日 |
Charlie | 2000年3月3日 |
状态图
下面是一个使用mermaid语法表示的状态图,展示了日期转换的过程。
stateDiagram
[*] --> FormatDate
FormatDate --> ConvertTo