我正在使用Sql Sever 2008 R2。有没有办法从时区偏移集中识别时区标准名称或夏令时间名称。
例如,我有"2013-09-26 03:00:00.0000000 -04:00",需要从上面看"东部夏令时间"。
如何在SQL服务器中完成此操作?
任何建议将不胜感激。
如果您谈论的是获取本地系统的时区,我过去已经对此进行了大量调查,如果不诉诸"不安全"的 SQL CLR 调用或不受支持的 xp_regread
调用来从注册表中读取此内容,这是不可能的。 一般建议在应用程序代码中执行此操作,而不是在数据库中执行此操作。
但是,如果您所说的是输入值中的偏移量为 -4:00
,并且您想将其转换为时区名称,恐怕这根本不可能,无论是在 SQL 中还是在您的应用程序代码中。
原因是有许多时区共享相同的偏移量。 例如,请参阅此维基百科页面,其中显示了所有使用-04:00
的区域。
即使您将范围限制为美国,由于夏令时,它在某些情况下仍然不起作用。例如,考虑 2013-11-03T01:00:00-05:00
的时间戳。 这是东部标准时间吗? 还是中央夏令时? 没有办法说,因为此时此刻可能是其中之一。
在美国(与欧洲不同(,每个时区在当地时间凌晨 2 点转换。 所以它就像一个从东向西移动的波浪。 虽然美国时区通常相隔一小时,但在春季前向过渡期间,它们可以相隔两个小时,而在回退过渡期间,它们可以具有完全相同的本地时间。