Формат даты и времени MySQL JSON_OBJECT ()

#mysql #sql

#mysql #sql

Вопрос:

Я создаю структуру JSON, используя функции JSON_OBJECT и JSON_ARRAY в моем запросе select. Проблема, с которой я сталкиваюсь, связана с форматом, в котором столбцы datetime возвращаются в форматированном результате JSON.

Например, у меня есть таблица titles

 id (INT), title (VARCHAR), created_at (DATETIME)
  

и строка была бы такой

 1,"Title 1","2019-02-03 12:13:14"
  

Если я сейчас выполню следующий запрос

 SELECT JSON_OBJECT('title',title,'created_at',created_at) AS title_json FROM titles WHERE id = 1;
  

Я получу результирующий столбец title_json в виде:

 {
    "title": "Title 1",
    "created_at": "2019-02-03 12:13:14.000000"
}
  

Я хотел бы, чтобы значения даты и времени возвращались в стандартном формате ГГГГ-ММ-ДД ЧЧ: ii:ss, без конечных нулей.

Возможно ли это?

Я просмотрел документацию JSON_OBJECT, но не смог найти никаких ключей к разгадке этой тайны. Я думаю, что используемый формат может быть определен где-то в настройках сервера / базы данных. Идеальным решением для моего случая было бы дополнительно задать желаемый формат в самих отдельных запросах.

Я использую: Сервер: MySQL Community Server (GPL) Версии: 5.7.24

Ответ №1:

Вы можете использовать DATE_FORMAT

 SELECT JSON_OBJECT('title',title,'created_at',
                    DATE_FORMAT(created_at, "%Y-%c-%d %H:%i:%s")) AS title_json 
  FROM titles 
 WHERE id = 1;
  

Комментарии:

1. Используйте ‘%Y-%m-%d %T’ для начальных нулей