MySQL5.7虛擬列:Invalid JSON value for CAST to DATE/TIME/DATETIME/TIMESTAMP from column json_extract

在使用MySQL5.7虛擬列功能時,發現DATE/DATETIME/TIMESTAMP類型的虛擬列無法插入數據,問題如下:

CREATE TABLE `test` (
    `json` TEXT NULL,
    `date` DATETIME NULL DEFAULT NULL,
    `v_date` DATE AS (json_extract(`json`,'$.date')) VIRTUAL
);


INSERT INTO test (json) VALUES ('{"date":"2019-01-21 00:00:00"}');

ERROR 3156 (22018): Invalid JSON value for CAST to DATE/TIME/DATETIME/TIMESTAMP from column json_extract at row 1




後來發現了MySQL提供的函數:json_unquote(),作用是去除json的引號。採用該函數後可以正常插入日期類型

CREATE TABLE `test_virtual_column` (
    `json` JSON NULL DEFAULT NULL,
    `date` DATETIME NULL DEFAULT NULL,
    `v_date` DATETIME AS (json_unquote(json_extract(`json`,'$.date'))) VIRTUAL
)



INSERT INTO `test`.`test_virtual_column` (`json`) VALUES ('{"date": 20191221}');

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章