您好,登录后才能下订单哦!
在MySQL中,日期和时间类型是非常重要的数据类型,它们用于存储日期、时间或日期时间信息。MySQL提供了多种日期时间类型,每种类型都有其特定的用途和存储格式。本文将详细介绍MySQL中的日期时间类型及其格式化方式。
MySQL支持以下几种日期时间类型:
DATE
TIME
DATETIME
TIMESTAMP
YEAR
DATE
类型DATE
类型用于存储日期值,格式为 YYYY-MM-DD
。它不包含时间部分。
1000-01-01
到 9999-12-31
示例:
CREATE TABLE example (
id INT PRIMARY KEY,
event_date DATE
);
INSERT INTO example (id, event_date) VALUES (1, '2023-10-05');
TIME
类型TIME
类型用于存储时间值,格式为 HH:MM:SS
。它可以表示一天中的时间,也可以表示时间间隔。
-838:59:59
到 838:59:59
示例:
CREATE TABLE example (
id INT PRIMARY KEY,
event_time TIME
);
INSERT INTO example (id, event_time) VALUES (1, '14:30:00');
DATETIME
类型DATETIME
类型用于存储日期和时间值,格式为 YYYY-MM-DD HH:MM:SS
。
1000-01-01 00:00:00
到 9999-12-31 23:59:59
示例:
CREATE TABLE example (
id INT PRIMARY KEY,
event_datetime DATETIME
);
INSERT INTO example (id, event_datetime) VALUES (1, '2023-10-05 14:30:00');
TIMESTAMP
类型TIMESTAMP
类型用于存储日期和时间值,格式为 YYYY-MM-DD HH:MM:SS
。与 DATETIME
不同的是,TIMESTAMP
类型的值会自动转换为UTC时间存储,并在检索时转换回当前时区。
1970-01-01 00:00:01
UTC 到 2038-01-19 03:14:07
UTC示例:
CREATE TABLE example (
id INT PRIMARY KEY,
event_timestamp TIMESTAMP
);
INSERT INTO example (id, event_timestamp) VALUES (1, '2023-10-05 14:30:00');
YEAR
类型YEAR
类型用于存储年份值,格式为 YYYY
。
1901
到 2155
示例:
CREATE TABLE example (
id INT PRIMARY KEY,
event_year YEAR
);
INSERT INTO example (id, event_year) VALUES (1, '2023');
MySQL提供了多种函数来格式化日期和时间值。常用的格式化函数包括 DATE_FORMAT()
、TIME_FORMAT()
和 STR_TO_DATE()
。
DATE_FORMAT()
函数DATE_FORMAT()
函数用于将日期或日期时间值格式化为指定的字符串格式。
语法:
DATE_FORMAT(date, format)
常用格式符:
- %Y
:四位数的年份
- %y
:两位数的年份
- %m
:两位数的月份(01-12)
- %d
:两位数的日期(01-31)
- %H
:两位数的小时(00-23)
- %i
:两位数的分钟(00-59)
- %s
:两位数的秒数(00-59)
- %W
:星期几的全名(Sunday-Saturday)
- %a
:星期几的缩写(Sun-Sat)
- %b
:月份的缩写(Jan-Dec)
- %M
:月份的全名(January-December)
示例:
SELECT DATE_FORMAT('2023-10-05 14:30:00', '%Y-%m-%d %H:%i:%s') AS formatted_date;
-- 输出:2023-10-05 14:30:00
SELECT DATE_FORMAT('2023-10-05 14:30:00', '%W, %M %d, %Y') AS formatted_date;
-- 输出:Thursday, October 05, 2023
TIME_FORMAT()
函数TIME_FORMAT()
函数用于将时间值格式化为指定的字符串格式。
语法:
TIME_FORMAT(time, format)
常用格式符:
- %H
:两位数的小时(00-23)
- %i
:两位数的分钟(00-59)
- %s
:两位数的秒数(00-59)
- %p
:AM 或 PM
示例:
SELECT TIME_FORMAT('14:30:00', '%H:%i:%s') AS formatted_time;
-- 输出:14:30:00
SELECT TIME_FORMAT('14:30:00', '%h:%i %p') AS formatted_time;
-- 输出:02:30 PM
STR_TO_DATE()
函数STR_TO_DATE()
函数用于将字符串转换为日期或日期时间值。
语法:
STR_TO_DATE(str, format)
常用格式符:
- %Y
:四位数的年份
- %y
:两位数的年份
- %m
:两位数的月份(01-12)
- %d
:两位数的日期(01-31)
- %H
:两位数的小时(00-23)
- %i
:两位数的分钟(00-59)
- %s
:两位数的秒数(00-59)
示例:
SELECT STR_TO_DATE('2023-10-05 14:30:00', '%Y-%m-%d %H:%i:%s') AS date_time;
-- 输出:2023-10-05 14:30:00
SELECT STR_TO_DATE('05/10/2023', '%d/%m/%Y') AS date;
-- 输出:2023-10-05
MySQL提供了多种函数来进行日期和时间的计算,常用的函数包括 DATE_ADD()
、DATE_SUB()
、DATEDIFF()
和 TIMESTAMPDIFF()
。
DATE_ADD()
函数DATE_ADD()
函数用于在日期或日期时间值上添加指定的时间间隔。
语法:
DATE_ADD(date, INTERVAL expr unit)
常用单位:
- YEAR
:年
- MONTH
:月
- DAY
:日
- HOUR
:小时
- MINUTE
:分钟
- SECOND
:秒
示例:
SELECT DATE_ADD('2023-10-05', INTERVAL 1 DAY) AS new_date;
-- 输出:2023-10-06
SELECT DATE_ADD('2023-10-05 14:30:00', INTERVAL 2 HOUR) AS new_datetime;
-- 输出:2023-10-05 16:30:00
DATE_SUB()
函数DATE_SUB()
函数用于在日期或日期时间值上减去指定的时间间隔。
语法:
DATE_SUB(date, INTERVAL expr unit)
常用单位:
- YEAR
:年
- MONTH
:月
- DAY
:日
- HOUR
:小时
- MINUTE
:分钟
- SECOND
:秒
示例:
SELECT DATE_SUB('2023-10-05', INTERVAL 1 DAY) AS new_date;
-- 输出:2023-10-04
SELECT DATE_SUB('2023-10-05 14:30:00', INTERVAL 2 HOUR) AS new_datetime;
-- 输出:2023-10-05 12:30:00
DATEDIFF()
函数DATEDIFF()
函数用于计算两个日期之间的天数差。
语法:
DATEDIFF(date1, date2)
示例:
SELECT DATEDIFF('2023-10-05', '2023-10-01') AS days_diff;
-- 输出:4
TIMESTAMPDIFF()
函数TIMESTAMPDIFF()
函数用于计算两个日期或日期时间值之间的时间差,可以指定单位。
语法:
TIMESTAMPDIFF(unit, datetime1, datetime2)
常用单位:
- YEAR
:年
- MONTH
:月
- DAY
:日
- HOUR
:小时
- MINUTE
:分钟
- SECOND
:秒
示例:
SELECT TIMESTAMPDIFF(DAY, '2023-10-01', '2023-10-05') AS days_diff;
-- 输出:4
SELECT TIMESTAMPDIFF(HOUR, '2023-10-05 12:00:00', '2023-10-05 14:30:00') AS hours_diff;
-- 输出:2
MySQL中的日期时间类型和格式化方式非常丰富,能够满足各种日期和时间处理的需求。通过合理使用这些类型和函数,可以有效地管理和操作数据库中的日期时间数据。无论是存储、格式化还是计算,MySQL都提供了强大的工具来简化开发者的工作。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。