Определить текущее состояние летнего времени, когда я не наблюдаю летнее время в своем часовом поясе (SQL Server) - PullRequest
2 голосов
/ 15 февраля 2012

Я получаю потоки данных с разных серверов по всей стране, и элементы поступают с меткой времени по Гринвичу. Я знаю смещение по Гринвичу для каждого из местоположений для стандартного времени, но я не уверен, какие местоположения поддерживают / соблюдают дневное время. Обычно я просто проверяю свое местное время, чтобы увидеть, каково смещение, и затем оттуда - я могу легко определить, наблюдается ли DST в настоящее время из-за текущего смещения от GMT) - за исключением того, что мой сервер находится в Аризоне, где DST не наблюдается. В результате я всегда GMT-7, независимо от того, активен ли DST в данный момент.

Есть ли простой способ определить, наблюдается ли DST, когда мой локальный сервер не меняет время? Я мог бы даже написать компонент .NET SQL-CLR, который проверяет что-то в системе, если мне нужно, хотя в идеале я хотел бы сделать это напрямую из кода T-SQL, если это возможно.

1 Ответ

1 голос
/ 15 февраля 2012

К сожалению, SQL Server не предоставляет явных флагов или функций DST.

Однако после вступления в силу DST в этом году вы можете скомпилировать новый список смещений для каждого сервера datediff(hh,getutcdate(),getdate()) и сравнить его с вашим текущимсписок стандартных смещений времени.Затем вы можете сделать вывод о соблюдении DST, где бы вы ни увидели изменение.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...