MySQL问题从ISO 8601格式更新DATETIME字段

时间:2015-01-23 11:10:34

标签: mysql datetime str-to-date

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

非常感谢。

1 个答案:

答案 0 :(得分:1)

您应该在模式中添加“z”,

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

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