我在数据集中有这个列:
order_date
'2009-01-02'
'2009-01-05'
'2009-01-05'
'2009-01-05'
'2009-01-06'
'2009-01-10'
'2009-01-10'
'2009-01-11'
日期是字符串格式的,所以我试图在MySQL工作台中使用将它们转换为日期格式
UPDATE orders SET order_date = STR_TO_DATE(order_date, '%d-%m-%Y');
但这不断抛出这个错误消息:
Error Code: 1411. Incorrect datetime value: '2010-10-13' for function str_to_date
我认为我的格式有误,所以我将代码修改为"%Y-%m-%d",但这似乎没有任何作用,只是返回:
0 row(s) affected Rows matched: 5506 Changed: 0 Warnings: 0
而且这些更改似乎没有生效,因为查询数据类型显示Type为"text">
我知道这个问题以前在这里被问过,我尝试过使用这样的解决方案,但似乎不起作用。日期为"2010-10-13"的条目似乎有一些问题,但我似乎无法找到解决方案。
请告诉我哪里出了问题,或者我错过了什么。提前谢谢。
-
您的字符串数据包含与默认日期时间格式匹配的值。因此,它们可以在不更改数据类型的情况下用作日期上下文表达式中的日期值——这将隐式执行。
-
STR_TO_DATE()
函数的第二个参数必须包含必须用于解析的模式。您指定了'%d-%m-%Y'
,因此数据应该包含这种格式的值,例如'13-10-2010'
,以便解析成功。您的数据包含'2010-10-13'
,模式告诉第一个数字组是天数,服务器提取该组为2010,并报告这是不正确的天数,因此,整个值为"0";日期时间值不正确;。