2017-03-27 21 views
1

Si j'ai une colonne SQL de type datetimeoffset, quelle est la valeur de la colonne qui me dit? Par exemple, si je vois 2017-03-27 15:00:00.6866682 -04:00 est-ce l'heure LOCALE?Comment interpréter la colonne DateTimeOffset dans SQL Server?

Signification, 3PM en EST et 19PM en GMT? Ou est-ce GMT avec un décalage, signifiant 3PM GMT et 11AM EST?

En d'autres termes, si un site connecté datetimeoffset de l'utilisateur se connecter et I (en Nouvelle-Angleterre) et mon copain à Moscou connecté au même moment (15 heures mon temps), je verrais:

2017-03-27 15:00:00.6866682 -04:00 
2017-03-27 22:00:00.6866682 +03:00 

ou:

2017-03-27 19:00:00.6866682 -04:00 
2017-03-27 19:00:00.6866682 +03:00 

ou, est-il configurable par serveur? Et si oui, comment pourrais-je vérifier le réglage?

Merci. J'ai déjà traité de cela auparavant, mais pour une raison ou pour une autre, cette connaissance ne colle pas.

Répondre

2

Le décalage est reflété dans la valeur.

2017-03-27 19:00:00.6866682 +03:00 = 2017-03-27 16:00:00.6866682 +00:00

http://rextester.com/YNJC2084

Le décalage est enregistré en tant que décalage en vigueur à ce moment. Donc, si le décalage d'un fuseau horaire change pour les économies de jour, alors vous verrez deux décalages différents pour un fuseau horaire donné en fonction de la période de l'année.

Vous pouvez utiliser pour modifier le décalage, par ex.

select switchoffset(sysdatetimeoffset(),'-05:00') 

retours 2017-03-27 15:44:35 -05:00

+0

donc "19:00 +03: 00" signifie "19 heures, heure de Moscou, 16 heures GMT le temps". Excellent et merci! Je ferai de mon mieux pour m'en souvenir, mais si je ne peux pas, au moins il est lié pour toujours dans mon compte d'échange de pile! –