Saya memiliki data berikut,

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

Saya mencoba mengekstrak nilai waktu menggunakan SQL di bawah ini,

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

Saya menggunakan fungsi ganti setelah membaca di sini< /a> bahwa untuk mysql 'T' harus diganti. sql saya kembali nol.

1
Bisoux 22 Juli 2020, 14:54

1 menjawab

Jawaban Terbaik

Anda juga perlu mengganti karakter tanda kutip ganda dan Z dengan '' atau ' ' sambil mengganti T dengan karakter ' ' untuk waktu literal sebagai

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

1
Barbaros Özhan 22 Juli 2020, 12:32