从mysql中的json数据中提取日期和时间

gev0vcfq  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(738)

我有以下数据,

{"value": 0, "action": "UPDATED", "effectiveFrom": "2019-01-31T07:27:13.000Z"}

我正在尝试使用下面的sql提取时间值,

SELECT CASE
         WHEN JSON_EXTRACT(changeData, '$.action') = 'UPDATED' THEN
          time(replace(JSON_EXTRACT(changeData, '$.effectiveFrom'), 'T', ' '))
         ELSE
          'N'
       END AS ACTION
  FROM change

我使用了replace函数,在这里读到,对于mysql,应该替换't'。我的sql返回null。

hgqdbh6s

hgqdbh6s1#

您还需要替换双引号和 Z 字符 ''' ' 更换时 T' ' 时间文字的字符

SELECT JSON_EXTRACT(changeData, '$.value') AS value,
       CASE
        WHEN JSON_EXTRACT(changeData, '$.action') = 'UPDATED' 
        THEN 
            TIME(
            REPLACE(REPLACE(REPLACE(
                                    JSON_EXTRACT(changeData, '$.effectiveFrom')
            ,'"',''),"Z",''),"T",' ')
            )
       ELSE 'N'
      END AS action
  FROM `change`

演示

相关问题