Разобрать столбец, который является объектом json - PullRequest
0 голосов
/ 29 октября 2019

Я хотел бы запросить этот столбец, который является объектом JSON.

|  x  |     y     |                        z                  |
----------------------------------------------------------------
|  1  | first      | {"first_name":["Pat","Amy T."],"last_name":["Liman","Pedano"],"updated_at":["1989-11-30T19:00:00.000-05:00","2018-10-11T12:45:44.674-04:00"]}    |
|  2  | second    | {"first_name":["Elli","Ala"],"last_name":["Sheppard","Mcgrial"],"updated_at":["2019-03-16T11:15:25.714-04:00","2019-05-21T11:29:00.684-04:00"]}   |

где z - объект json.

Я пытался

SELECT x, y, t1.first_name, t1.last_name, t1.updated_at
FROM versions_table v
    LATERAL VIEW json_tuple(v.z, 'first_name', 'last_name', 'updated_at') t1 
    as `first_name`, `last_name`, `updated_at`
where first_name is not null;

, но я получаю массив json. Что было бы лучшим подходом для изменения формата даты для

, чтобы выходные данные были такими 2019-01-03.

Спасибо!

1 Ответ

0 голосов
/ 29 октября 2019

Ваша строка даты представлена ​​в формате «комбинированная метка времени». Насколько я понимаю, вы просто пытаетесь преобразовать эту строку в тип даты.

PostgreSQL

Следующий пример работает и приведёт вашу строку к дате, которую выwant:

SELECT '2018-10-11T12:45:44.674-04:00'::date

Вы можете узнать больше о кастинге в в этом уроке . :: - это оператор приведения.

Другой вариант - использовать to_date или аналогичный :

SELECT to_date('2018-10-11T12:45:44.674-04:00', 'YYYY-MM-DD');

MySQL

В MySQL вы можете использовать функцию DATE

SELECT DATE('2018-10-11T12:45:44.674-04:00')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...