如何从Sql Server中的TimeZoneOffset了解TimeZone StandardName或DayLightName

Anu*_*p S 6 sql sql-server timezone sql-server-2008-r2 timezone-offset

我正在使用Sql Sever 2008 R2.有没有办法从timezoneoffSet中识别时区标准名称或日光名称.

例如,我有"2013-09-26 03:00:00.0000000 -04:00",需要上面的"东部夏令时".

如何在SQL Server中完成此操作?

任何建议将不胜感激.

Mat*_*int 1

如果您正在谈论获取本地系统的时区,我过去已经对此进行了大量调查,并且如果不诉诸“不安全”SQL CLR 调用或不受支持的xp_regread调用来从注册表中读取此信息,这是不可能的。一般建议是在应用程序代码中执行此操作,而不是在数据库中执行此操作。

但是,如果您所说的是输入值中有一个偏移量-4:00,并且您想将其转换为时区名称,那么恐怕这根本不可能,无论是在 SQL 中还是在您的程序中应用程序代码。

原因是许多时区具有相同的偏移量。例如,请参阅此维基百科页面,其中显示了所有使用-04:00.

即使您将范围限制为美国,由于夏令时的原因,在某些情况下它仍然无法工作。例如,考虑 的时间戳2013-11-03T01:00:00-05:00。这是东部标准时间吗?还是中部夏令时间?无法判断,因为目前可能是其中之一

在美国(与欧洲不同),每个时区的转换时间为当地时间凌晨 2 点。所以它就像一个从东向西移动的波浪。虽然美国时区通常间隔一小时,但在春季向前过渡期间,它们可以间隔两小时,而在回退过渡期间,它们可以具有完全相同的当地时间。