2015-03-20 7 views
1

Я хочу, чтобы преобразовать восточному времени ("GMT-05: 00") в IST ("GMT + 05: 30") в SQL Server 2008.Преобразование другого часового пояса в SQL Server

Он должен на основе Смещение & DayLightBias.

Ex: Eastern Time имеет значение смещения 300 & DaylightBias значение -60 & IST имеет значение смещения значение -330 & DayLightBias -60.

Я знаю, как преобразовать это в C#, но я хочу создать задание и для этого мне нужно это преобразование в SQL Server.

ответ

0

Используйте DATETIMEOFFSET тип данных и метод SWITCHOFFSET в SQL Server 2008 или более поздней версии:

-- 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 
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, а численные параметры в конце объясняются в риом проекте.

Смежные вопросы