2016-07-29 2 views
0

N'existe-t-il pas un moyen de configurer Sql Server Management Studio pour afficher dans une requête la valeur d'une colonne DateTimeOffset dans le fuseau horaire local du client, au lieu de UTC?Dans SSMS, affichez la valeur DateTimeOffset dans le fuseau horaire local

Exemple: Je suis dans le fuseau horaire +02: 00. Une valeur est stockée sous la forme 2016-07-27 22:00:00.0000000 +00:00. Actuellement, cette valeur est affichée comme telle dans les résultats de la requête. Je veux qu'il soit affiché (formaté) comme 2016-07-28 00:00:00.0000000 +02:00 lors de l'exécution de cette requête sur SSMS sur mon ordinateur.

Actuellement, j'utilise manuellement quelque chose comme SWITCHOFFSET(CONVERT(datetimeoffset, <DateColumn>), DATENAME(TzOffset, SYSDATETIMEOFFSET())) qui est évidemment très lourd. Si je ne me trompe pas, dans Oracle, les paramètres NLS au niveau de la session pourraient être utilisés pour cela. Y a-t-il quelque chose de similaire dans Sql Server?

Répondre

1

Ni SQL Server ni SSMS ne peuvent fonctionner avec le concept d'un "fuseau horaire de session" (comme Oracle, MySql, etc.).

De même, cela n'aurait aucun sens de convertir automatiquement le décalage, car le décalage fait en fait partie de la valeur datetimeoffset enregistrée.

Si vous utilisez SQL Server 2016 ou SQL Azure Database, vous pouvez utiliser la nouvelle déclaration AT TIME ZONE, comme dans:

SELECT yourdto AT TIME ZONE @thetimezoneid 

Sinon, pensez à utiliser mon projet SQL Server Time Zone Support.

Aucun des deux ne peut vous donner l'ID du fuseau horaire du système. Vous devez connaître le fuseau horaire avec lequel vous voulez travailler.