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

Développement SQL Server Discussion :

DateTime et getdate()


Sujet :

Développement SQL Server

Vue hybride

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 36
    Par défaut DateTime et getdate()
    Je débute et voudrais comprendre un détail,
    SQlServer 2005 Français OS Français et je travaille sur la base avec Management Studio Express.
    Ayant créé une table avec une colonne de type DateTime
    Si j'insère une ligne avec
    INSERT INTO FRM (FRM_ID, FRM_NOM, FRM_DATE_CREATION)
    VALUES (8, 'albert', , '1996-05-31 20:52:23')
    J'ai bien sur un message
    Conversion of char datatype to datetime datatype resulted in an out of range datetime .
    En corrigeant la date 31-05-1996 tout est Ok.
    Donc j'en déduit que les dates sont bien au format disons "Français".
    Mais lorsque je requete: SELECT getdate()
    j'obtiens : 2009-05-13 17:58:39.400

    Quelqu'un peut il me dire ce que je rate ?

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    C'est tout simplement parce que ce que vous montre SQL Server Management Studio est une des représentations possibles d'une date.

    En effet les colonnes de type DATETIME stockent sous forme de deux entiers (de 4 octets chacun) les dates : un entier pour la date et un entier pour l'heure.
    C'est en outre pour cette raison que lorsque vous ajoutez un nombre entier à une date, vous augementez d'autant de jour celle-ci

    Dès lors vous auriez du écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO FRM (FRM_ID, FRM_NOM, FRM_DATE_CREATION)
    VALUES (8, 'albert', CONVERT(DATETIME, '2009-05-13 12:00:00', 120))
    Qui correspond au format que vous utilisez.

    De même quand vous exécutez SELECT getdate(), SQL Server vous retourne sa représentation par défaut d'une date stockée dans une colonne de type DATETIME.

    Voici un article pour vous documenter

    @++

  3. #3
    Membre chevronné Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Par défaut
    Bonjour,

    Il y 3 choses à prendre en compte.

    Les données de types datetime, c'est sont des données binaires typées. A la limite on ne connait pas leur codage interne et on ne s'en préocupe pas.

    La réprésentation caractère en entrée, infuencée notamment par SET DATEFORMAT. Ici il vaut mieux toujours utiliser le format ISO, car il est portable. Coder toute une application en transtypant systématiquement des chaines de caractères au format date en français va poser de gros problème lorsqu'il s'agira d'utiliser des dates au format américain au autre.

    Rq: Normallement, dans la base, on utilise que des données, pas des format. Ca, c'est l'affaire de l'IHM.

    La représentation caractère en sortie, qui s'effectue selon un autre format, ici par management studio.

    @+

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 36
    Par défaut Merci pour vos éclairciossements
    Merci de vos réponses et de m'avoir mis le doigt sur les deux aspects, représentation interne et affichage par management studio.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recuperer la date sans l'heur dans un champ datetime
    Par bob33 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 22/06/2010, 13h59
  2. recuperer heure et minute de datetime
    Par nora_ora dans le forum Langage SQL
    Réponses: 4
    Dernier message: 08/10/2003, 13h47
  3. Convertir un datetime to mm.yyyy ?
    Par Nadaa dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 29/09/2003, 16h45
  4. Réponses: 3
    Dernier message: 23/09/2003, 10h12
  5. CAST DATETIME ----> SMALLDATETIME
    Par Guizz dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/06/2003, 13h07

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