我使用的是Sql Sever 2008 R2。有没有办法从timezoneoffSet中识别时区标准名称或日光名称。
例如我有“2013-09-26 03:00:00.0000000 -04:00”并且需要 上面的“东方夏令时”。
如何在SQL Server中完成此操作?
任何建议都将受到赞赏。
答案 0 :(得分:1)
如果您正在谈论获取本地系统的时区,我过去曾对此进行过大量调查,如果不采用“不安全”的SQL CLR调用或不受支持的xp_regread
这是不可能的。要求从注册表中读取此内容。一般建议是在应用程序代码中执行此操作,而不是在数据库中执行此操作。
但是,如果您所说的是您的输入值中有-4:00
的偏移量,并且您希望将其转换为时区名称,那么我担心这根本不可能既不在SQL中,也不在您的应用程序代码中。
原因是许多时区共享相同的偏移量。例如,请参阅this Wikipedia page,其中显示了使用-04:00
的所有区域。
即使您将范围限制为仅限于美国,由于daylight saving time,它在某些情况下仍然无效。例如,考虑2013-11-03T01:00:00-05:00
的时间戳。这是东部标准时间吗?还是中部夏令时?没有办法说出来,因为此时它可能是一个。
在美国(与欧洲不同),每个时区在其自己的本地时间凌晨2点过渡。所以它就像是从东方向西方移动的波浪。虽然美国时区通常间隔一小时,但在春季前进过渡期间,它们可以相隔两个小时,而在后退过渡期间,它们可以具有相同的当地时间。