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-