Как мне сохранить дату UTC ISO8601 в базе данных MySQL?

У меня есть тысячи дат в следующем формате:

2011-10-02T23: 25: 42Z (также известный как ISO 8601 в формате UTC)

Какой тип данных MySQL мне следует использовать для хранения такой даты ISO8601 в базе данных MySQL? Например. Datetime , timestamp или что-то еще?

Что лучше всего подходит для сравнения (например, получение записей между двумя датами / временем) и упорядочение результатов по запросам? Что делать, если база данных очень большая?

И как лучше всего преобразовать указанную выше строку PHP для хранилища MySQL? (Я предполагаю, что date_default_timezone_set ('UTC'); будет использоваться?)

22
задан Chuck Le Butt 30 January 2015 в 16:20
поделиться

1 ответ

Используя Вашу дату и время в моей системе, которая является PDT:

SELECT CONVERT_TZ(str_to_date('2011-10-02T23:25:42Z','%Y-%m-%dT%H:%i:%sZ'),'+00:00','SYSTEM') from dual;

2011-10-02 16:25:42

, Если Ваша дата и время имеет дробную микросекунду; включайте. %f перед Z следующим образом:

SELECT CONVERT_TZ(str_to_date('2011-10-02T23:25:42.123456Z','%Y-%m-%dT%H:%i:%s.%fZ'),'+00:00','SYSTEM') from dual;

2011-10-02 16:25:42.123456
1
ответ дан 29 November 2019 в 05:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: