如何在SQL Server 2008中的时区之间进行转换?

时间:2013-01-23 11:13:49

标签: sql sql-server-2008 sql-server-2008-r2 timezone

我正在使用SQL Server 2008 R2,我想知道如何将CST时间转换为IST时间。我已经在我的dtDate列中有CST时间,并希望将其转换为IST格式。有人可以帮我搞定。

2 个答案:

答案 0 :(得分:4)

我认为你的意思是“中央标准时间”和“印度标准时间”,因为“CST”和“IST”可能意味着一些不同的东西。如果这是错误的,只需将时区的正确偏移替换为如下所示:

select cast(switchoffset(todatetimeoffset(dtDate, '-06:00'), '+05:30') as datetime)

以下是步骤:

  • Convert我们的日期时间为datetimeoffset,这是一个时区感知数据类型。
  • Switch the offset到新的时区。
  • 转换为日期时间(可选,但这似乎是您想要的)。

答案 1 :(得分:0)

我不认为这是一个完美的答案。我不知道你提到的时区,但它对我没有帮助。

我在英国,在一家美国公司工作,我在ET时区制作报告。我从中提取数据的系统以UTC格式保存所有日期。我运行报告的服务器托管在纽约,时间是ET。

我正在报告历史数据,需要将表上的日期转换为ET日期。我一直在减去GETDATE()和GETUTCDATE()之间的区别,但我意识到我现在正在获得这些日期之间的差异。我转换的日期是历史性的,长话短说,一年8个月ET和UTC之间有4小时的差异,其他4个月有5个小时。

如果要为夏令时区域转换日期,则需要更复杂的解决方案