0

我有一个带有 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 以及如何解决这个问题?

非常感谢。

4

1 回答 1

1

您应该将“z”添加到您的模式中,

update test set optin1 = STR_TO_DATE(optin,'%Y-%m-%dt%H:%i:%sz')

http://sqlfiddle.com/#!9/ea601/1

于 2015-01-23T11:14:45.497 回答