74 votes

Comment puis-je convertir un DateTimeOffset SQL Server 2008 en DateTime

J'espère convertir une table qui a un DATETIMEOFFSET , en un champ DATETIME MAIS recalcule le temps en tenant compte du décalage. Ceci, en effet, convertit la valeur en UTC .

par exemple.

 CreatedOn: 2008-12-19 17:30:09.0000000 +11:00

qui sera converti en

 CreatedOn: 2008-12-19 06:30:09.0000000

ou

 CreatedOn: 2008-12-19 06:30:09.0000000 + 00:00 -- that's a `DATETIMEOFFSET`, but `UTC`.

À votre santé :)

93voto

RichardTheKiwi Points 58121

La conversion à l'aide de presque tous les styles entraînera la conversion de la valeur datetime2 en UTC. De plus, la conversion de datetime2 en datetimeoffset définit simplement le décalage à +00:00 , comme indiqué ci-dessous, c'est donc un moyen rapide de convertir de Datetimeoffset(offset!=0) en Datetimeoffset(+00:00)

 declare @createdon datetimeoffset
set @createdon = '2008-12-19 17:30:09.1234567 +11:00'

select CONVERT(datetime2, @createdon, 1)
--Output: 2008-12-19 06:30:09.12

select convert(datetimeoffset,CONVERT(datetime2, @createdon, 1))
--Output: 2008-12-19 06:30:09.1234567 +00:00

44voto

Vipeout Points 369

J'utiliserais l'option SQL intégrée :

 select SWITCHOFFSET(cast('2008-12-19 17:30:09.0000000 +11:00' as datetimeoffset),'+00:00')

19voto

Sukesh Chand Points 387

Conversion DateTimeoffset (fuseau horaire) dans SQL Server.

SQL Server 2016 (13.x) et versions ultérieures

Exemple

 Select GETUTCDATE()
Select Convert(DATETIME, GETUTCDATE() AT TIME ZONE 'UTC' AT TIME ZONE 'Central European Standard Time')
Select Convert(DATETIME, GETUTCDATE() AT TIME ZONE 'UTC' AT TIME ZONE 'India Standard Time')

Le résultat sera

 2020-08-18 08:22:21.640
2020-08-18 10:22:21.640
2020-08-18 13:52:21.640

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X