Как запросить ежедневные подсчеты, используя местное время, когда данные в GMT - PullRequest
0 голосов
/ 01 октября 2018

Мне нужен запрос к серверу sql для получения ежедневного количества строк за данный месяц.Моя метка времени хранится в GMT, но мой месяц должен быть определен клиентом по местному времени.Этот код, кажется, работает, но очень неприятен и, вероятно, станет медленным, поскольку таблица растет даже с EntryDate в качестве индекса.Есть ли более простой способ?Клиенты будут в разных часовых поясах, поэтому я не могу создать дополнительный столбец.Месяц / год / часовой пояс в этом примере жестко запрограммированы, но будут передаваться через параметры в код C # для выполнения SQL.

Я использую Microsoft SQL Azure (RTM) - 12. Было бы многобыстрее передать смещение в часах и сместить даты, используя это?

select CreateDate=DATEPART(DAY, EntryDate AT TIME ZONE 'Greenwich Standard Time' AT TIME ZONE 'Central Standard Time'), Items=count(1) 
   from TestTable1 
   where year(EntryDate AT TIME ZONE 'Greenwich Standard Time' AT TIME ZONE 'Central Standard Time') = 2018  
     and month(EntryDate AT TIME ZONE 'Central Standard Time' AT TIME ZONE 'Greenwich Standard Time') = 9 
   group by DATEPART(DAY, EntryDate AT TIME ZONE 'Greenwich Standard Time' AT TIME ZONE 'Central Standard Time') 
   order by 1

Любые идеи приветствуются !!!

1 Ответ

0 голосов
/ 03 октября 2018

Вот как вы переводите в местное время.Он не включает никакой логики подсчета строк.

DECLARE @V_UTC_DATETIME DATETIME
  SET @V_UTC_DATETIME='2012-12-03T08:48:52'
  SELECT @V_UTC_DATETIME AS UTC_DATETIME,
DATEADD(hh,((DATEDIFF(ss,@V_UTC_DATETIME,GETDATE())-DATEDIFF(ss,
@V_UTC_DATETIME,GETUTCDATE()))/3600),
@V_UTC_DATETIME) AS LOCAL_DATETIME
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...