MySQL вставляет формат даты и времени ISO8601

У меня возникли проблемы с вставкой формата даты и времени ISO8601 в мою базу данных MySQL.

Я хотел бы вставить формат ISO (например, ггггммддТчммсс+|-ччмм) в мою таблицу базы данных, столбец DATETIME.

Когда я пытаюсь вставить, у меня возникла проблема с:

Операция не удалась: произошла ошибка при применении сценария SQL к базе данных. Выполнение: UPDATE db.orders SET date='20080915T155300+0500' ГДЕ id='1';

ОШИБКА 1292: 1292: неправильное значение даты и времени: «20080915T155300 + 0500» для столбца «дата» в строке 1 Оператор SQL: UPDATE db.orders SET date = «20080915T155300 + 0500» ГДЕ id = «1»

Есть ли способ сохранить дату и время в этом формате в MySQL?


person ldragicevic    schedule 17.09.2017    source источник
comment
Есть ли способ сохранить дату и время в этом формате в MySQL? Нет, нет собственного способа.. думаю, у вас должен быть столбец даты и времени и столбец часового пояса... таким образом вы можете вычислить дату и время с часовым поясом на лету с помощью CONVERT_TZ при выборе   -  person Raymond Nijland    schedule 17.09.2017


Ответы (1)


MySQL имеет довольно непонятную поддержку часовых поясов. Возможно, это делает то, что вы хотите:

select convert_tz(str_to_date(left(val, 15), '%Y%m%dT%H%i%s'), '+00:00', insert(right(val, 5), 4, 0, ':'))
from (select '20080915T155300+0500' as val) x
person Gordon Linoff    schedule 17.09.2017
comment
Мне также нужно будет получить вставленную дату и время с часовым поясом. Как вы думаете, таким образом я мог бы вернуть вставленное значение (с часовым поясом) и получить его, потому что я вижу, что оно преобразует только часы на основе +ЧЧ:мм (часовой пояс) и вставляет «2008-09-15 20:53:00»? - person ldragicevic; 17.09.2017
comment
@ldragicevic . . . Вы можете поменять местами два аргумента, чтобы получить противоположное поведение. - person Gordon Linoff; 17.09.2017