MySQL : différence entre DATETIME et TIMESTAMP

13 08 2010

Quand on veut stocker une date/heure dans MySQL, on a le choix entre 2 types de champs :

  • DATETIME
  • TIMESTAMP

Il ne faut pas confondre le type TIMESTAMP de MySQL avec le timestamp UNIX utilisé par PHP, qui correspond au nombre de secondes écoulées depuis le 1 janvier 1970 (naissance d’UNIX).

En fait il y a peu de différence entre ces 2 formats.

DATETIME stocke la date sous le format YYYY-MM-DD HH:MM:SS.

Le format de TIMESTAMP change lui en fonction de la taille que vous avez choisit pour le champ. Par défaut, il choisit la taille maximale qui est de 14, le format est alors presque identique à DATETIME, les caractères séparateurs en moins (-, : et espace) : YYYYMMDDHHMMSS.

Mais si vous choisissez une taille inférieure, TIMESTAMP(8) par exemple, alors il stockera juste le jour, pas l’heure : YYYYMMDD.

Alors à première vue, TIMESTAMP ça a l’air d’être carrément plus le bordel que DATETIME, mais il y a un avantage à utiliser TIMESTAMP plutôt que DATETIME, c’est la valeur par défaut.

Pour un champ date, ça peut être pratique d’affecter comme valeur par défaut l’instant présent. Ça peut se faire avec un champ TIMESTAMP, auquel on peut mettre CURRENT_TIMESTAMP en valeur par défaut, alors que ça ne fonctionnera pas avec un DATETIME (erreur MySQL #1067 - Valeur par défaut invalide pour ‘date’).

Malheureusement, il n’est pas possible d’utiliser le résultat d’une fonction comme valeur par défaut (je pensais à NOW()).

Edit 16/10/2010 16:31
Ce que vous avez lu ci-dessus est valable pour les version antérieures à MySQL 4.1 (sortie en 2004), pour les versions suivantes, le format de TIMESTAMP est identique à celui de DATETIME.

On ne lit vraiment que de la merde sur le forum hfr !


Partager :

Ces icônes sont des liens vers des sites de partage de signet sociaux où les lecteurs peuvent partager et découvrir de nouveaux liens.
  • Digg
  • del.icio.us
  • Facebook
  • Digg -fr
  • Live
  • MisterWong Fr
  • Scoopeo
  • StumbleUpon
  • Technorati
  • Wikio FR

Actions

Informations

Et maintenant je fais quoi ?

Laisser un commentaire

Vous pouvez utiliser ces balises html : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>