У меня есть тысячи дат в следующем формате:
2011-10-02T23: 25: 42Z
(также известный как ISO 8601 в формате UTC)
Какой тип данных MySQL мне следует использовать для хранения такой даты ISO8601 в базе данных MySQL? Например. Datetime
, timestamp
или что-то еще?
Что лучше всего подходит для сравнения (например, получение записей между двумя датами / временем) и упорядочение результатов по запросам? Что делать, если база данных очень большая?
И как лучше всего преобразовать указанную выше строку PHP для хранилища MySQL? (Я предполагаю, что date_default_timezone_set ('UTC');
будет использоваться?)
Используя Вашу дату и время в моей системе, которая является 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