日期:2014-05-16  浏览次数:20897 次

sql server 时区转换问题
对于给定的时间,我已知道它的时区,如何才能准确地知道时区偏移量呢

举个例子:

2013-2-1 13:00, 我已知它是美国山地时间,现在需要把它转换为太平洋时间,于是我应该使用TODATETIMEOFFSET转换成带时区的时间:
select @date=TODATETIMEOFFSET('2013-2-1 13:00','-07:00')

再用switchoffset函数把它转换为太平洋时间:
select switchoffset(@date,'-08:00')

但美国山地时间又分为标准时间和夏令时,时区偏移量分别是 -07:00和-06:00, 因为2013-2-1这天使用标准时间,所以偏移量为-07:00, 如果给定的时间在3到11月这段期间内,偏移量应为-06:00.

同样太平洋时间也分标准时间和夏令时,时区偏移量分别是 -08:00和-07:00

那么应该如何才能得到准确的时区偏移从而让我能自由地进行时区转换?难道我要去建一张表,把每个时区哪个时段使用夏令时,哪个时段冬夏令等这些烦人的数据存起来才能计算吗?有没有简单点的方法呢?
------解决方案--------------------
可以建个函数做转换,自行设定转夏令时和标准时间的条件..
------解决方案--------------------
呵呵,SQL SERVER好像没有自带的时区转换函数。
我觉得最省力的办法,像楼主说的那样,建立一张配置表,把那些“烦人”的数据存储起来,这样的话,下一步算时区就比较简单了。

------解决方案--------------------
http://www.dotblogs.com.tw/ricochen/archive/2012/10/30/79754.aspx
参考一下。