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