我想将东部时间(" GMT-05:00")转换为SQL Server 2008中的IST(" GMT + 05:30")。
它应该基于偏见& DayLightBias
Ex:东部时间的偏差值为300& DaylightBias值-60& IST的偏差值为-330& DayLightBias值-60。
我知道如何在C#中转换它,但我想创建一个作业,为此我需要在SQL Server中进行此转换。
答案 0 :(得分:0)
在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
答案 1 :(得分:0)
除了基本偏移和dst偏差之外,还有很多事情要考虑。具体而言,不同的偏移在不同日期和不同时间在标准时间和日光时间之间切换。
正确的方法是使用指定的时区。与许多其他数据库不同,SQL Server没有时区的本机支持。它仅支持时区偏移。请参阅the timezone tag wiki中的“时区!=偏移”。
幸运的是,我已经为你完成了所有艰苦的工作。使用我的SQL Server Time Zone Support项目,您可以编写此查询:
SELECT Tzdb.ConvertZone(yourDateTimeValue, 'America/New_York', 'Asia/Kolkata', 1, 1)
时区是标准IANA tz database identifiers,最后的数字选项在项目的自述文件中有解释。