0

我有一个简单的表,其中包含一个 json 字段和一个从 json 中的值生成的字段:

create table foo (
    id integer primary key auto_increment
  , somedata json
  , a_date datetime generated always as convert(somedata->>theDateAsAString, datetime))
);

当我尝试插入一些数据时,出现错误:

insert into foo(somedata) values ('{"theDateAsAString":"2017-08-23T23:00:00.000Z"}');

ERROR 1292 (22007): Truncated incorrect datetime value: '2017-08-23T23:00:00.000Z'

但是,如果我删除生成的列,添加上述数据,然后更改表以添加列,我不会收到此类错误,并且该字段将按应有的方式显示。为什么?

我尝试通过在 my.cnf 中设置 NO_ZERO_DATE 和 NO_ZERO_IN_DATE 从 SQL 模式中删除它,重新启动并使用SHOW VARIABLES LIKE 'sql_mode'.

4

1 回答 1

0

经过大量实验后,我尝试str_to_date在生成的列的定义中使用,并且没有错误!

于 2017-09-26T15:43:37.907 回答