在MySQL中将字符串字段转换为日期

60
我正在使用一个系统,其中日期以字符串形式存储在格式为dd/mm/yyyy的字段中。是否可以在SELECT查询中将其转换为yyyy-mm-dd(这样我就可以使用DATE_FORMAT函数了)?MySQL是否有日期解析函数?
目前我唯一能想到的方法是连接一堆子字符串,但希望有更简单的解决方案。
(不幸的是,我无法将该字段转换为真正的日期字段,因为它是一个元数据表:同一列包含不同字段的值,这些值只是字符串。)
4个回答

130
这个要翻译的内容非常简单且没有明确的上下文,如果您能提供更具体的信息或需要其他帮助,请告知我。
STR_TO_DATE(t.datestring, '%d/%m/%Y')

...将把字符串转换为日期时间数据类型。要确保它以您期望的格式输出,可以使用DATE_FORMAT

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

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


1
它很有帮助,为我提供了快速解决方案。 - Aditya P Bhatt
如果列已经是日期格式,提到 DATE_FORMAT 是很好的。 - рüффп

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)

4

STR_TO_DATE函数可以帮助你实现此功能,并且它有一个格式参数。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接