我用的是一个以字符串形式存储日期的系统 dd/mm/yyyy . 是否可以将此转换为 yyyy-mm-dd 在select查询中(以便我可以使用 DATE_FORMAT 在上面)?mysql有日期解析功能吗?
dd/mm/yyyy
yyyy-mm-dd
DATE_FORMAT
目前我能想到的唯一方法是连接一堆子串,但希望有一个更简单的解决方案。
(不幸的是,我无法将字段转换为真正的日期字段,因为它是一个元表:同一列包含不同字段的值,这些字段只是字符串。)
SELECT STR_TO_DATE(dateString, '%d/%m/%y') FROM yourTable...
STR_TO_DATE 允许您执行此操作,并且它有一个格式参数。
是的,有 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(t.datestring, '%d/%m/%Y')
…将字符串转换为日期时间数据类型。为了确保它以您想要的格式出现,请使用 DATE_FORMAT :
DATE_FORMAT(STR_TO_DATE(t.datestring, '%d/%m/%Y'), '%Y-%m-%d')
如果不能更改原始列上的数据类型,我建议 creating a view 使用 STR_TO_DATE 调用以将字符串转换为日期时间数据类型。
STR_TO_DATE