在MySQL中从string字段中转换date

我使用的date以dd/mm/yyyy格式存储为string。 是否有可能在SELECT查询中将其转换为yyyy-mm-dd (以便我可以使用DATE_FORMAT )? MySQL有dateparsingfunction吗?

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

(不幸的是,我不能将字段转换为真正的date字段,因为它是一个元表:同一列包含不同字段的值,只是string。)

这个:

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

…将string转换为date时间数据types。 要确保它以您想要的格式输出,请使用DATE_FORMAT :

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

如果无法更改原始列上的数据types,则build议创build一个使用STR_TO_DATE调用将string转换为DateTime数据types的视图 。

是的,有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) 

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

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