IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration SQL Server Discussion :

SQL Server convertit automatiquement mes datetime ?


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 54
    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

  2. #2
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    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

Discussions similaires

  1. Couper SQL-Server 2008 automatiquement
    Par popofpopof dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 21/04/2011, 21h10
  2. Réponses: 2
    Dernier message: 05/04/2007, 08h08
  3. Exportation automatique Excel vers SQL Server
    Par jhalawa dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/07/2005, 11h45
  4. [CR9][SQL Server] Connexion automatique
    Par PetitScarabe dans le forum Connectivité
    Réponses: 6
    Dernier message: 31/03/2005, 17h51
  5. Convertir une date au format excel en datetime SQL server
    Par ALLB dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 20/07/2004, 11h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo