Работа с UTC, часовым поясом и создание GROUP BY на этом с LocalTime

Я застрял. Нужна помощь.

Я храню даты в формате UTC в базе данных.

Пример строк:

GeneratedAt:

  • 2011-06-08 23:30
  • 2011-06-09 03:30
  • 2011 -06-09 15:30

Местное время для моего пользователя -2 часа (Центральная Европа). Когда мне нужны строки с 09, у меня есть 3 строки.

Проблема с GROUP BY day для целей отчетности. У меня 1 для 08 и 2 для 09, но это неверно для моего местного времени.

Везде я вижу: «хранить данные в UTC». Как это сделать правильно?

ОБНОВЛЕНИЕ 1:
Для доступа к данным я использую NHibernate и предпочитаю решения, не зависящие от движка базы данных. Итак, я ищу решение с чем-то вроде таблицы измерений даты / времени (или чего-то в этом роде).

В моей таблице данных есть такие столбцы:

  • GeneratedAt (datetime)
  • GeneratedAt_Year (int)
  • GeneratedAt_Month (int)
  • GeneratedAt_Day (int)
  • GeneratedAt_Hour (int)

Благодаря этому я могу легко группировать по: год, год + месяц, год + месяц + день, год + месяц + день + час . К сожалению, это UTC. :(

Как провести рефакторинг этого решения для работы с часовыми поясами пользователя?

6
задан dariol 22 June 2011 в 21:41
поделиться