2009-12-07 62 views
52

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

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

(不幸的是我可以在现场不能转换为真正的日期字段,因为它是一个元表:同一列中包含不同的字段仅仅是字符串值)

回答

111

此:

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

它的帮助和帮助我很多快速解决方案 – 2014-01-22 14:45:44

17

是的,有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) 
0
SELECT STR_TO_DATE(dateString, '%d/%m/%y') FROM yourTable...