MySQL版本:5.7.22
我有一个带有JSON列的表。提出了一个新要求,我将需要为JSON文档的属性创建索引。
该字段是Date
,以毫秒为单位(Javascript标准)以ISO 8601格式存储。
不能保证该字段存在于文档中,但通常会存在。
我正在尝试使用以下方法创建虚拟列:
alter table Drivers add column licenseExpiresAt timestamp
generated always as (
STR_TO_DATE(
JSON_UNQUOTE(
JSON_EXTRACT(`licenseInfo`, '$.expiresAt')), '%Y-%m-%dT%H:%i:%s'))
virtual null after licenseInfo;
问题在于,只要我SELECT
的数据来自此表,如果licenseExpiresAt
属性没有设置,NULL
列就会设置为当前时间戳,而不是expiresAt
licenseInfo
中不存在。
我在这里做什么错了?
编辑:
如我所料,运行:
select * from Drivers where licenseExpiresAt is null
给我一个空的结果集。
清洗时:
select * from Drivers where licenseExpiresAt = NOW();
返回所有不具有.licenseInfo.expiresAt
属性的行。