Вы можете использовать DATE_FORMAT () , чтобы сделать дату формата ISO 8601 в выражении.
См. Формат даты в MySQL SELECT как ISO 8601
В вашем случае:
SELECT DATE_FORMAT(time, '%Y-%m-%dT%TZ'),
JSON_OBJECT('t', DATE_FORMAT(time, '%Y-%m-%dT%TZ'), 'v', value) AS value
FROM values
Или альтернативно:
SELECT v.time_8601, JSON_OBJECT('t', v.time_8601, 'v', v.value) AS value
FROM (SELECT DATE_FORMAT(time, '%Y-%m-%dT%TZ') AS time_8601, value FROM values) AS v
Ваш комментарий:
https://dev.mysql.com/doc/refman/8.0/en/datetime.html говорит:
MySQL извлекает и отображает значения DATETIME в формате «ГГГГ-ММ-ДД ЧЧ: ММ: СС».
Не хакерский способ - использовать этот формат. Если вы хотите использовать другой формат (даже формат ISO), вы должны использовать функции DATE_FORMAT () и STR_TO_DATE ().
Есть функция GET_FORMAT () , которая возвращает строку формата для некоторых популярных вариантов. Но он не поддерживает формат ISO 8601 (это специально указано в руководстве, как если бы этот вопрос уже задавался).
-- formats in ISO 9075 like '%Y-%m-%d %H:%i:%s', NOT ISO 8601
DATE_FORMAT(time, GET_FORMAT(DATETIME, 'ISO'))