确定sql server中的远程夏令时

时间:2013-04-26 08:00:14

标签: sql-server timezone dst

我想确定夏令时是否有效,但是在与我的服务器所在位置不同的区域。

我的问题是我想检查伦敦的夏令时,我的服务器在加拿大;是否可以找到不同时区的夏令时?

4 个答案:

答案 0 :(得分:5)

您需要部署DST表并查找所需区域的DST时间。 DST由各种组织发布并定期更新。您需要了解的是,DST无法通过算法确定,只能按照各个地区的各种立法机构设置,并经常更改。例如,这里是current 2013 DST table。保持应用程序的DST查找表最新是您应用程序的周期性任务。

答案 1 :(得分:0)

最好的办法是使用the two common Time Zone databases之一。

但是,似乎(根据this question)很难使用SQL Server中的Microsoft TimeZone数据库,因为TimeZoneInfo类标有[HostProtection]属性MayLeakOnAbort 1}}设置为真。

我认为可能的解决方案是使用NodaTime类。这些应该可以从SQL CLR访问,并提供对两个数据库的访问。

我会尝试这一点,并在完成时更新。

<强>更新

在与SQL CLR的安全限制作斗争之后,我得出结论,这种方法目前也不可能。

我目前的建议是在应用程序逻辑中在数据库之外进行时区转换。

答案 2 :(得分:0)

这是SQL Server的原始IsDST ......

CAST((DATEPART(month, DATEADD(week, -1, <DateTime>)) + 2) % 13 / 5 AS bit) AS IsDST

标准时间11月8日 - 3月7日收益率为0,白天时间3月8日 - 11月7日收益率为1。

答案 3 :(得分:-1)

在Sql Server 2016上:

现在使用sys.time_zone_info可以查询特定时区当前是否在DST上。

select * from sys.time_zone_info

这里有一个示例结果

name                    current_utc_offset    is_currently_dst
Aleutian Standard Time  -09:00                1
Hawaiian Standard Time  -10:00                0
Marquesas Standard Time -09:30                0
Alaskan Standard Time   -08:00                1