【问题标题】:Extract date & time from JSON data in mysql从mysql中的JSON数据中提取日期和时间
【发布时间】:2020-11-11 23:02:58
【问题描述】:

我有以下数据,

{"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 函数读取了here,对于 mysql,'T' 应该被替换。 我的 sql 返回 null。

【问题讨论】:

  • @BarbarosÖzhan 我刚刚注意到时间函数为我提供的样本数据返回 00:20:19.000000,但它是 07:27:13.000。有什么我错过的吗?

标签: mysql sql json


【解决方案1】:

您还需要将双引号和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`

Demo

【讨论】:

  • 时间函数为我提供的样本数据返回 00:20:19.000000,但它应该返回 07:27:13.000。
猜你喜欢
  • 1970-01-01
  • 2020-04-09
  • 1970-01-01
  • 2020-12-19
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 1970-01-01
  • 2017-02-01
相关资源
最近更新 更多