Страница 1 из 1

Хранение даты в БД без проблем с часовыми поясами

Добавлено: 2015-02-04 13:19:53
Времянщик
Мужики, столкнулся тут с проблемой:

Есть самописная прога на php+apache+mysql5.6+FreeBSD, типа СРМ система для конторы.
Работала всех устраивая 3 года и тут я сервак обновил до 10-STABLE, и прилетело соответственно изменение часовых поясов от 26 октября 2014 года.

Время во всех местах ушло на час вниз. К тому же заметил это не сразу, а соответственно новые занесённые с момента обновления данные были уже в корректном часовом поясе. Вобщем небольшой караул. В принципе я это решил, но на будущее решил избавить себя от решений правительства в сфере часовых зон.

Подскажите пожалуйста, как лучше это предусмотреть? Хранить дату в виде строки, типа дд-мм-гггг чч.мм.сс?
Работать в запросах с этим не очень удобно, хочется хранить в виде UNIX_TIMESTAMP.

Подскажите пожалуйста решение, как время нормализовать чтобы оно не зависело от часового пояса? В GMT может на серваке его держать всегда, а уже программно приводить к нужному поясу? Или всё-же строка единственный выход?

Хранение даты в БД без проблем с часовыми поясами

Добавлено: 2015-02-04 14:18:33
Alex Keda
Гмт

Хранение даты в БД без проблем с часовыми поясами

Добавлено: 2015-02-04 14:20:27
snorlov
Ничего не понял, кроме того, что вы прошляпили переход на зимнее время))) А как раньше работали, при скачках с зимнего на летнее и обратно?

Хранение даты в БД без проблем с часовыми поясами

Добавлено: 2015-02-04 18:16:33
Времянщик
Лис, просто хранить в ГМТ не поможет как я понял. Один фиг допустим сменился на серваке (в час Х) ГМТ+3 на ГМТ+2 и выводиться все данные о времени которые были при ГМТ+3 (до часа Х) станут на час меньше.
Тут решение всё-таки хранить метки времени как строку в дополнение к TIMESTAMP'у. А также вовремя обновлять данные временных зон. В строке время к тому же хранится и с указанием зоны, так что в случае если прошляпил чего-то, то можно UPDATE'ом поменять все TIMESTAMP'ы для дат после смены часовых поясов.
Короче смысл в том, что пока петух в жопу не клюнет... На этой ситуации полностью прочувствовал всю важность внимания к хранению времени в прогах.
Теперь этот вопрос хорошенько обмозгую и в своих делах его буду всегда учитывать. Чего и другим желаю. :)

Хранение даты в БД без проблем с часовыми поясами

Добавлено: 2015-02-04 19:04:33
f_andrey
Так хранить юникстайм, возможно ещё какую инфу, если его мало и надо ещё что. Там как понимаю не только время периодически то тут, то там меняется, но как стало известно, ещё иногда и секунды прибавляют, утилиты на это, с помощью как раз баз ntp должны нормально реагировать и корректно переводить даты, именно для этого и надо держать актуальную базу.