Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Administration
Administration Forum d'entraide sur l'administration du dataserver, via SSM ou ligne de commande, les tables système, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/11/2010, 15h09   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2002
Messages : 54
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 54
Points : 14
Points : 14
Par défaut SQL Server convertit automatiquement mes datetime ?

Bonjour,

Je viens d'observer un comportement étrange dans server 2008 R2 que j'aimerais eliminer. J'ai inséré un un record dans ma table, avec notamment un champ datetime représentant une valeur en UTC. Une fois inséré, un select sur ce record me retourne le datetime mais en heure francaise.

Est-ce que SSMS convertit automatiquement la valeur à la timezone de mon ordinateur, ou est-ce que le serveur a stocké la valeur en convertissant de UTC vers la timezone où il se trouve ?

Enfin, comment faire pour s'assurer qu'il stocke ce que je lui demande (en UTC) et pas ce qu'il a envie de faire? Cette base est repliquée sur des serveurs dans d'autres timezones et j'ai peur que ça foute le bordel tout ça.

Merci
Bleuarff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 15h39   #2
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
Code :
1
2
3
4
 
SELECT 'DATE TIME UTC ', SYSUTCDATETIME();
SELECT 'DATE UTC ', CONVERT (date, SYSUTCDATETIME());
SELECT 'TIME UTC ', CONVERT (time, SYSUTCDATETIME());
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 15h40   #3
Expert Confirmé Sénior
 
Homme François
Chef de projet NTIC
Inscription : janvier 2007
Messages : 5 354
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Chef de projet NTIC

Informations forums :
Inscription : janvier 2007
Messages : 5 354
Points : 9 746
Points : 9 746
Bonjour,
Citation:
Envoyé par Bleuarff Voir le message
Est-ce que SSMS convertit automatiquement la valeur à la timezone de mon ordinateur, ou est-ce que le serveur a stocké la valeur en convertissant de UTC vers la timezone où il se trouve ?
Non, Sql Server n'a pas de référence sur ton fuseau horaire.
A priori tu as un problème à l'insertion.

Facile à tester avec le bout de code suivant.
Le SELECT retourne bien l'heure UTC de l'insertion, et pas l'heure locale du système :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
USE [MyBase]
 
CREATE TABLE [dbo].[TableTestDateUTC](
[DateUTC] [datetime] NOT NULL,
[ID] [int] NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[TableTestDateUTC] ADD CONSTRAINT [DF_TableTestDateUTC_DateUTC] DEFAULT (getutcdate()) FOR [DateUTC]
GO
INSERT INTO [MyBase].[dbo].[TableTestDateUTC]
([ID])
VALUES
(1)
GO
SELECT [DateUTC]
,[ID]
FROM [MyBase].[dbo].[TableTestDateUTC]
GO
__________________

Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


Une réponse vous a aidé ? utiliser le bouton

"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
Bluedeep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 15h44   #4
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
Citation:
SYSDATETIME et SYSUTCDATETIME ont plus de précision en fractions de seconde que GETDATE et GETUTCDATE. SYSDATETIMEOFFSET inclut l'offset de fuseau horaire système. SYSDATETIME, SYSUTCDATETIME et SYSDATETIMEOFFSET peuvent être assignés à une variable de chacun des types de date et d'heure.
Source :
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h52.


 
 
 
 
Partenaires

Hébergement Web