我有一个包含varchar字段的表,其中包含ISO 8601时间格式,如2015-01-18t10:00:10z。
我可以用
select STR_TO_DATE('2015-01-18t10:00:10z','%Y-%m-%dt%H:%i:%s')
并获得正确的结果:
2015-01-18 10:00:10
当我使用它插入DATETIME字段时,我得到:
update test set optin1 = STR_TO_DATE(optin,'%Y-%m-%dt%H:%i:%s')
错误代码:1292 截断的日期时间值不正确:'2015-01-18t10:00:10z'
Optin
是varchar ISO 8601时间列
Optin1
是我要更新的DATETIME字段。
任何人都知道为什么这是hapepenig以及如何解决这个问题?
非常感谢。
答案 0 :(得分:1)
您应该在模式中添加“z”,
update test set optin1 = STR_TO_DATE(optin,'%Y-%m-%dt%H:%i:%sz')