我有一个日期字段 (tinytext) 以“dd-mm-yy”的格式保存日期信息,例如 07-01-90。我想使用 mysql 查询将其更改为 yyyy-mm-dd 日期格式。我尝试了下面的代码,但没有任何反应。
mysql_query("UPDATE Table SET date=STR_TO_DATE('date','%Y,%m,%d')");
最佳答案
您使用了正确的函数 STR_TO_DATE(str,format)
来实现目标,但是您犯了两个错误:
- 在您的查询中,
format
参数与字符串表达式格式不匹配。你说它是dd-mm-yy
格式,同时你将%Y,%m,%d
(逗号分隔)传递给格式
参数。查询将返回“不正确的日期时间值”错误。您应该使用%d-%m-%Y
。 - 您不能通过设置不同类型的传递值来即时更改列的数据类型。您必须先更新值,然后更改列的数据类型。
所以,总结一下:
mysql_query("UPDATE `Table` SET `date` = STR_TO_DATE(`date`, '%d-%m-%Y')");
mysql_query("ALTER TABLE `Table` CHANGE COLUMN `date` `date` DATE");
此外,考虑切换到推荐的 PDO扩展代替旧的和slowly deprecated mysql
扩展。
关于mysql更改日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9426993/