从字符串字段转换MySQL中的日期

时间:2009-12-07 17:26:20

标签: mysql date

我正在使用一个系统,其中日期以dd/mm/yyyy格式存储为字符串。是否可以在SELECT查询中将其转换为yyyy-mm-dd(以便我可以在其上使用DATE_FORMAT)? MySQL有日期解析功能吗?

目前我能想到的唯一方法是连接一堆子串,但希望有一个更简单的解决方案。

(不幸的是我无法将字段转换为真正的日期字段,因为它是一个元表:同一列包含不同字段的值,只是字符串。)

4 个答案:

答案 0 :(得分:127)

此:

STR_TO_DATE(t.datestring, '%d/%m/%Y')

...会将字符串转换为datetime数据类型。为了确保它以您希望的格式出现,请使用DATE_FORMAT

DATE_FORMAT(STR_TO_DATE(t.datestring, '%d/%m/%Y'), '%Y-%m-%d')

如果您无法更改原始列上的数据类型,我建议creating a view使用STR_TO_DATE调用将字符串转换为DateTime数据类型。

答案 1 :(得分:18)

是的,有str_to_date

mysql> select str_to_date("03/02/2009","%d/%m/%Y");
+--------------------------------------+
| str_to_date("03/02/2009","%d/%m/%Y") |
+--------------------------------------+
| 2009-02-03                           |
+--------------------------------------+
1 row in set (0.00 sec)

答案 2 :(得分:4)

STR_TO_DATE允许你这样做,它有一个格式参数。

答案 3 :(得分:0)

SELECT STR_TO_DATE(dateString, '%d/%m/%y') FROM yourTable...