我正在使用一个系统,其中日期以dd/mm/yyyy
格式存储为字符串。是否可以在SELECT查询中将其转换为yyyy-mm-dd
(以便我可以在其上使用DATE_FORMAT
)? MySQL有日期解析功能吗?
目前我能想到的唯一方法是连接一堆子串,但希望有一个更简单的解决方案。
(不幸的是我无法将字段转换为真正的日期字段,因为它是一个元表:同一列包含不同字段的值,只是字符串。)
答案 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...