Каков практичный способ хранения даты и времени, чтобы я мог позволить пользователям просматривать / запрашивать данные по их собственному местному времени, сохраняя при этом информацию об исходной дате и времени.
Как правило, пользователи хотят иметь возможность запрашивать (по собственному местному времени) данные, собранные из систем в различных часовых поясах. Но иногда они хотят знать, что данные были созданы, скажем, в 18:00 в исходной системе. Это помогает, когда пользователи из разных уголков мира сообщают об одном и том же событии.
User1: What? We don't have any data for 20:00
User2: Dude, it says 20:00 right there on my screen.
User1: Wait, what timezone are you? What's the UTC-time?
User2: What is UTC? Is that something with computers?
User1: OMFG! *click*
Я ищу совет о том, как хранить данные.
Я думаю о сохранении всех дат и времени в UTC и добавлении дополнительного столбца, содержащего исходное имя часового пояса, в форме, позволяющей мне использовать mysql CONVERT_TZ
или аналог в Java. Затем приложение конвертирует введенные пользователем даты в UTC, и я легко могу запросить базу данных. Все даты также могут быть легко преобразованы в местное время пользователей в приложении. Используя исходный столбец часового пояса, я также смогу отобразить исходную дату и время.
Однако это означает, что для каждой даты и времени мне нужен дополнительный столбец ...
start_time_utc datetime
start_time_tz varchar(64)
end_time_utc datetime
end_time_tz varchar(64)
Я на правильном пути?
Кто-нибудь, кто работал с такими данными, поделится своим опытом?
(я буду использовать MySQL 5.5 CE)
Обновление 1
Данные будут доставляться в XML-файлах, где каждая запись имеет дату и время в некотором местном часовом поясе. Таким образом, будет только один процесс вставки, выполняющийся в одном месте.
После загрузки в базу данных он будет представлен в каком-либо веб-приложении пользователям в разных часовых поясах. В большинстве случаев использования интересующие данные также происходили из того же часового пояса, что и пользователь, просматривающий данные. Для некоторых из более сложных вариантов использования ряд событий взаимосвязан и охватывает несколько часовых поясов. Следовательно, пользователи хотят иметь возможность говорить о событиях, чтобы исследовать возможные причины / последствия в другое время. Не по UTC, не по местному времени.