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

Dis*_*oat 58 mysql date

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

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

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

OMG*_*ies 128

这个:

STR_TO_DATE(t.datestring, '%d/%m/%Y')
Run Code Online (Sandbox Code Playgroud)

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

DATE_FORMAT(STR_TO_DATE(t.datestring, '%d/%m/%Y'), '%Y-%m-%d')
Run Code Online (Sandbox Code Playgroud)

如果您无法更改原始列上的数据类型,我建议创建一个使用该STR_TO_DATE调用将字符串转换为DateTime数据类型的视图.


nos*_*nos 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)
Run Code Online (Sandbox Code Playgroud)