2013-10-27 4 views
2

Как мне преобразовать текущее время (datetime) в мой часовой пояс в другой часовой пояс, скажем, Франция? Я огляделся вокруг, но не нашел никаких сообщений, которые могли бы мне помочь. Я использую SQL Server 2008.sql server конвертировать datetime в другой часовой пояс?

+2

http://stackoverflow.com/questions/16872007/date-time-conversion-from-timezone-to-timezone-in-sql-server – fan711

+0

@ fan711 - хорошо, я» Посмотрите, как это происходит. btw, его вопрос sql server 2012. – Steam

+0

У вас есть текущий тип данных столбца Datetime как Datetimeoffset? Или это просто Datetime ?? –

ответ

2

выберите CONVERT (DateTime, SWITCHOFFSET (CONVERT (DateTimeOffset, GETDATE()), '+ 5:30')) Date_India,

выберите CONVERT (DateTime, SWITCHOFFSET (CONVERT (DateTimeOffset, GETDATE()), '+ 03:30')) Date_Iran

check here

+0

Спасибо, но я получаю сообщение об ошибке «SWITCHOFFSET» не является признанным встроенным именем функции. на ss2000 и ss2005. – Steam

+0

запрос говорит индийское время = 2013-10-30 18: 59: 51.060. google says 2AM oct 31. – Steam

+1

Пожалуйста, измените getdate() на ** GetUTCDate() ** – Jaider

2

Пожалуйста, замените GETDATE() с GetUTCDate(), чтобы получить точный результат, в противном случае смещение (5:30) в этом случае будет быть добавлено к текущему времени (которое уже имеет некоторое смещение) и приведет к неправильному результату.

Например, если вы находитесь в Пакистане, то GetDate() даст вам время как GMT + 5: 00, а добавление 5:50 смещения в это время приведет к GMT + 10:30, что совершенно неверно.

1

Я также согласен, что правильный SQL-запрос использует GetUTCDate(), как вы видите на скриншоте.

select CONVERT(datetime,SWITCHOFFSET(CONVERT(datetimeoffset,GetUTCDate()),'+05:30')) Date_India_withUtcDate 

enter image description here

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