MySQL转日期格式
导言
在数据库中,日期是非常常见的数据类型之一。MySQL提供了多种函数和格式化选项来处理和转换日期。本文将介绍如何使用MySQL的日期和时间函数来转换日期格式。
日期和时间数据类型
在MySQL中,有多种日期和时间数据类型可供使用。常见的类型包括:
- DATE:用于表示日期,格式为'YYYY-MM-DD'。
- TIME:用于表示时间,格式为'HH:MM:SS'。
- DATETIME:用于表示日期和时间,格式为'YYYY-MM-DD HH:MM:SS'。
- TIMESTAMP:用于表示时间戳,格式为'YYYY-MM-DD HH:MM:SS',可自动更新。
日期和时间函数
MySQL提供了许多内置的日期和时间函数,用于处理和转换日期数据。下面是一些常用的函数:
CURDATE()
CURDATE()
函数返回当前日期,不包含时间部分。
SELECT CURDATE();
结果为:
2021-10-01
CURTIME()
CURTIME()
函数返回当前时间,不包含日期部分。
SELECT CURTIME();
结果为:
14:30:00
NOW()
NOW()
函数返回当前日期和时间。
SELECT NOW();
结果为:
2021-10-01 14:30:00
DATE()
DATE()
函数从日期时间中提取日期部分。
SELECT DATE(NOW());
结果为:
2021-10-01
TIME()
TIME()
函数从日期时间中提取时间部分。
SELECT TIME(NOW());
结果为:
14:30:00
YEAR()
YEAR()
函数从日期中提取年份。
SELECT YEAR(NOW());
结果为:
2021
MONTH()
MONTH()
函数从日期中提取月份。
SELECT MONTH(NOW());
结果为:
10
DAY()
DAY()
函数从日期中提取天数。
SELECT DAY(NOW());
结果为:
1
HOUR()
HOUR()
函数从时间中提取小时数。
SELECT HOUR(NOW());
结果为:
14
MINUTE()
MINUTE()
函数从时间中提取分钟数。
SELECT MINUTE(NOW());
结果为:
30
SECOND()
SECOND()
函数从时间中提取秒数。
SELECT SECOND(NOW());
结果为:
0
日期格式化
DATE_FORMAT()
DATE_FORMAT()
函数用于将日期格式化为指定的字符串。
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');
结果为:
2021-10-01
上述代码中,%Y
表示四位数的年份,%m
表示两位数的月份,%d
表示两位数的天数。
更多日期格式化选项,请参考MySQL官方文档:[
转换日期格式
有时候,我们需要将日期从一种格式转换为另一种格式。MySQL提供了STR_TO_DATE()
函数和DATE_FORMAT()
函数来实现日期格式之间的转换。
STR_TO_DATE()
STR_TO_DATE()
函数用于将字符串转换为日期。
SELECT STR_TO_DATE('2021-10-01', '%Y-%m-%d');
结果为:
2021-10-01
上述代码中,第一个参数是要转换的字符串,第二个参数是目标日期的格式。
示例
假设我们有一个表orders
,其中有一个字段order_date
存储着订单的日期,格式为'YYYYMMDD'。我们希望将其转换为'YYYY-MM-DD'的格式。
SELECT order_date, DATE_FORMAT(STR_TO_DATE(order_date, '%Y%m%d'), '%Y-%m-%d') AS formatted_date
FROM orders;
结果为:
order_date | formatted_date |
---|---|
20210930 | 2021-09-30 |
20211001 | 2021-10-01 |
20211002 | 2021- |