Как определить точку перехода на летнее время в SQL Server - PullRequest
0 голосов
/ 04 декабря 2018

Летнее время вступило в силу в 1:00 воскресенья, 25 марта 2018 года, и снова вступит в силу в 1:00 воскресенья, 29 марта 2019 года в моем часовом поясе.

Я знаю, что в sys.time_zone_info есть флаг is_currently_dst, однако я пытаюсь определить конкретную точку его изменения.

Может ли это быть определено динамически на сервере SQL в будущем?

1 Ответ

0 голосов
/ 04 декабря 2018

Краткий ответ: нет.Длинный ответ: это зависит от ОС, и в настоящее время SQL Server не предлагает абстрагирования от правил DST, кроме очень простого sys.time_zone_info.

. Вы можете получить информацию о часовом поясе и использовать специализированную клиентскую библиотеку, чтобы получить корректировкуправила..NET имеет TimeZoneInfo, и вы можете использовать функцию CLR для отражения этой информации обратно в SQL Server.Также имеется поддержка сторонних производителей (отказ от ответственности: нет опыта).

В качестве альтернативы, 2016 предлагает AT TIME ZONE для выполнения определенных расчетов, которые могут быть или не быть достаточнымидля ваших целей.Это не позволит вам точно определить предыдущее изменение, но позволит определить, действовал ли DST для какой-либо конкретной точки (сравнивая смещения часовых поясов с известной точкой).

...