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

 MySQL Discussion :

quelle diference y a t-il entre TIMESTAMP et DATETIME


Sujet :

MySQL

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 10
    Par défaut quelle diference y a t-il entre TIMESTAMP et DATETIME
    http://dev.mysql.com/doc/mysql/en/timestamp-4-1.html

    je comprend pas bien la difference entre TIMESTAMP et DATETIME.

    en gros c'est pareil mais c'est différent !!

    en fait je veux m'en servir pour créer un chat et des script qui disent combien il y a de gens connecter, donc il s'agit d'entrées dans ma base qui y resteront très peu longtemps (quelques minutes) et il me faut pouvoir tester si mes entrées ont moins de 90 secondes pas exemple,

    le format DATETIME à l'air très joli pour garder une date lisible de quelque chose mais j'ai pas l'impression que c'est le format le plus rapide pour faire des test rapides d'anciennenté (quelques minutes) et de classement (order by `date`), il me semblerais que un format de la date du genre le nombre de secondes écoulée depuis l'an 14 serait plus rapide pour ce que j'ai à faire,

    donc j'aurais envie de dire que TIMESTAMP ait plus de chances de ressembler à ce que je cherche mais en fait je comprend pas si TIMESTAMP est vraiement différent de DATETIME,

    à votre avis c'est quoi le mieux,
    et c'est quoi le plus rapide pour gérer des entrée qui ne sont vielle que 136 secondes

    merci,
    @+,
    hélium

  2. #2
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 55
    Par défaut
    Le type DATETIME est prévu lorsque vous souhaitez stocker une date et une heure. MySQL affiche les valeurs de type DATETIME au format ' AAAA-MM-JJ HH:MM:SS '. L'intervalle de validité va de ' 1000-01-01 00:00:00 ' à ' 9999-12-31 23:59:59 '. (``validité'' signifie que même si d'autres valeurs plus anciennes peuvent être manipulées, il n'est pas garantit qu'elles le seront).
    C'est Timestamp qu'il te faut la

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 10
    Par défaut
    C'est Timestamp qu'il te faut la
    c'est effectivement l'impression que j'ai mais mon pb c'est que je comprend pas le fonctionnement de Timestamp et quand je google un peu je tombe principalement sur datetime,

    j'arrive pas à trouver un bon tutora pour débutant sur TIMESTAMP, tout ce que je sais c'est que c'est pas pareil sur tous les serveurs

  4. #4
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 55
    Par défaut
    Un timestamp, c'est un nombre.
    C'est le nombre de secondes écoulées depuis le 1er Janvier 1970 à Minuit.
    Suit le lien pour le tuto aussi

  5. #5
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 10
    Par défaut
    Voici ce que je ne comprend pas :
    TIMESTAMP columns are displayed in the same format as DATETIME columns. In other words, the display width is fixed at 19 characters, and the format is YYYY-MM-DD HH:MM:SS.
    (la page d'aide à laquelle me renvoie phpmyadmin,
    http://dev.mysql.com/doc/mysql/en/datetime.html)

    en gros YYYY-MM-DD HH:MM:SS ça m'a pas trop l'air d'être un nombre se secondes, alors je vois pas ce que ça viens faire là

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 81
    Par défaut
    Citation Envoyé par helium_lynx
    je comprend pas bien la difference entre TIMESTAMP et DATETIME.
    Pour résumer le comparatif MySQL Date and Time Types :
    • Un DATETIME occupe 8 octets alors qu'un TIMESTAMP n'en occupe que 4.
    • En mode MAXDB SQL un TIMESTAMP est un DATETIME.
    • L'intervalle des valeurs légales d'un TIMESTAMP est [1970; 2037] alors qu'un DATETIME peut être compris entre '1000-01-01 00:00:00' et '9999-12-31 23:59:59'.
    • Seul le TIMESTAMP permet l'initialisation et la mise à jour automatique d'un champ à la date et heure courante.
    Après les deux diffèrent assez à l'utilisation puisqu'on ne peut pas afficher directement un TIMESTAMP, il faut le convertir, on peut par contre considérer que le format d'affichage 'YYYY-MM-DD HH:MM:SS' du DATETIME est "lisible". Quelqu'un m'a aussi parlé de limitations fonctionnelles du DATETIME, je ne sais pas ce qu'il en est car j'effectue très peu d'opérations sur les dates et heures.

  7. #7
    Membre Expert
    Avatar de Alexandre T
    Homme Profil pro
    Ingénieur DevOps
    Inscrit en
    Mai 2002
    Messages
    1 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 214
    Par défaut
    Quelqu'un m'a aussi parlé de limitations fonctionnelles du DATETIME, je ne sais pas ce qu'il en est
    Comme de nombreux SGBD, MySQL permet de descendre très bas dans les années (l'an 1000 en l'occurence) mais est incapable de traiter les cas particuliers...

    Par exemple : nous sommes le 12 juin 2006, si je retire 424 années que j'ajoute 2 mois et retire encore 2 jours, mathématiquement je tombe le 10 octobre 1582. Mais cette date est maudite pour les informaticiens. Car elle n'existe pas. Le 10 octobre 1582 n'a jamais existé !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    mysql> SELECT CURRENT_DATE - INTERVAL 424 YEAR + INTERVAL 4 MONTH - INTERVAL 2 DAY;
    +----------------------------------------------------------------------+
    | CURRENT_DATE - INTERVAL 424 YEAR + INTERVAL 4 MONTH - INTERVAL 2 DAY |
    +----------------------------------------------------------------------+
    | 1582-10-10                                                           |
    +----------------------------------------------------------------------+
    1 row in set (0.00 sec)
    MySQL ignore ce cas particulier... Pire encore est la gestion des années bisextiles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    mysql> SELECT '2008-02-29' - INTERVAL 600 YEAR;
    +----------------------------------+
    | '2008-02-29' - INTERVAL 600 YEAR |
    +----------------------------------+
    | 1408-02-29                       |
    +----------------------------------+
    1 row in set (0.00 sec)
    Or avant 1582, il n'y avait pas d'années bisextiles !
    Et MySQL gère assez bien les dates bisextiles après 1582 comme le montre ces exemples :
    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
    mysql> SELECT '2007-02-29' - INTERVAL 1 MONTH;
    +---------------------------------+
    | '2007-02-29' - INTERVAL 1 MONTH |
    +---------------------------------+
    | NULL                            |
    +---------------------------------+
    1 row in set, 1 warning (0.00 sec)
     
    mysql> SELECT '2007-03-29' - INTERVAL 1 MONTH;
    +---------------------------------+
    | '2007-03-29' - INTERVAL 1 MONTH |
    +---------------------------------+
    | 2007-02-28                      |
    +---------------------------------+
    1 row in set (0.00 sec)
    Enfin, bref, tous ces exemples pour dire que le format idéal est le TIMESTAMP pour de petites plages de dates. Pour des grandes plages de dates, ou pour des calculs précis, je préfère utiliser la méthode de SqlPRO : http://sqlpro.developpez.com/cours/gestiontemps/
    Alexandre Tranchant
    Ingénieur DevOps pour le Ministère de l'Écologie
    Retrouvez mes articles sur PHP et Symfony

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

Discussions similaires

  1. [Datastage] Ecart entre TIMESTAMP
    Par arsonix dans le forum DataStage
    Réponses: 4
    Dernier message: 22/03/2013, 11h15
  2. Ecart entre timestamp
    Par worldhugo dans le forum Langage
    Réponses: 6
    Dernier message: 09/07/2009, 10h46
  3. [CSS] [FAQ] Quelles sont les règles de priorités entre CSS?
    Par BnA dans le forum Contribuez
    Réponses: 0
    Dernier message: 05/12/2007, 09h59
  4. Quelle solution pour un transfert sécurisé entre deux machines
    Par choubiroute dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 21/04/2006, 11h20
  5. Quelle solution pour partager des données entre Linux ?
    Par herzleid dans le forum Administration système
    Réponses: 5
    Dernier message: 03/04/2006, 16h19

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