Je compense une colonne pour la différence de timezone. Comment convertir le datetime renvoyé en valeur par défaut, maintenant qu'il est affiché avec des informations de décalage dans la colonne?
,SWITCHOFFSET(CAST(CREATEDDATETIME AS datetimeoffset) ,DATEDIFF(minute, GETUTCDATE(), GETDATE())) AS CREATEDDATETIMEPDT 2014-07-01 16:44:15.000 2014-07-01 08:44:15.0000000 -08:00
Si je comprends bien, vous avez un time "local" converti en heure UTC et vous voulez revenir à l'heure locale? Cela démontre une façon.
select Dateadd(minute,datepart(TZoffset, CREATEDDATETIMEPDT), convert(datetime,CREATEDDATETIMEPDT)) as LocalTime from (select SWITCHOFFSET( CAST(Getdate() AS datetimeoffset)
,DATEDIFF(minute, GETUTCDATE(), GETDATE()) ) AS CREATEDDATETIMEPDT ) UTC
Pour get à partir d'une date stockée comme UTC datetime à l'heure locale, je pense que vous étiez assez proche
select SWITCHOFFSET( CAST(YourStoredDateTime AS datetimeoffset),DATEDIFF(minute, GETUTCDATE(), GETDATE())) AS CREATEDDATETIMEPDT
puis utilisez dateadd () comme je l'ai fait ci-dessus.