在SQL Server中转换不同的时区



我想在SQL Server 2008中将东部时间("GMT-05:00")转换为IST("GMT+05:30")。

它应该基于偏见&DayLightBias

例如:东部时间的偏差值为300&DaylightBias值-60&IST具有偏置值-330&DayLightBias值-60。

我知道如何在C#中转换它,但我想创建一个作业,为此我需要在SQL Server中进行转换。

在SQL Server 2008或更新版本中使用DATETIMEOFFSET数据类型和SWITCHOFFSET方法:

-- define your input in Eastern Time
DECLARE @Input DATETIMEOFFSET = SYSDATETIME()
-- SET @Input = SWITCHOFFSET(@Input, '-05:00')
SET @Input = SWITCHOFFSET(@Input, -300)
DECLARE @output DATETIMEOFFSET
-- convert Eastern Time to IST
-- SET @output = SWITCHOFFSET(@input, '+05:30')
SET @output = SWITCHOFFSET(@input, 330)
SELECT @Input, @output
  • MSDN SQL Server联机丛书DATETIMEOFFSET文档
  • MSDN SQL Server联机丛书SWITCHOFFSET文档

除了基准偏移和dst偏移之外,还有很多事情需要考虑。具体来说,不同的偏移量在不同日期和不同时间的标准时间和夏令时之间切换。

正确的方法是使用命名时区。与许多其他数据库不同,SQL Server不支持时区。它只支持时区偏移。请参阅时区标记wiki中的"时区!=偏移量"。

幸运的是,我为你做了所有的艰苦工作。使用我的SQL Server时区支持项目,您可以编写以下查询:

SELECT Tzdb.ConvertZone(yourDateTimeValue, 'America/New_York', 'Asia/Kolkata', 1, 1)

时区是标准的IANA tz数据库标识符,最后的数字选项在项目的自述中进行了解释。

相关内容

  • 没有找到相关文章

最新更新