Pour stocker une date dans mysql il existe beaucoup (trop ?) de solutions différentes avec mysql. Le choix du bon format de date permet de se simplifier la vie, je vais donc faire un petit inventaire des différents formats de date et vous faire part de mon choix.
MySQL timestamp
format : YYYYMMDDHHMMSS
exemple : 19830730000000
Le format timestamp de mysql est le plus mauvais choix pour deux raisons :
La première est qu'il n'est pas compatible avec php car les fonctions de manipulation de date de php utilise le timestamp unix.
La seconde : l'intervalle de validité du mysql timestamp est le même que celui d'un timestamp unix (de 1971 à 2037) ce qui limite la validité des données de votre base de données.
Timestamp unix
format : entier 32 bits signé
exemple : 428389200
Le timestamp unix est un entier signé de 32 bits il est donc possible de stocker les dates sous ce format dans une colonne de type integer dans mysql.
Stocker les dates sous ce format permet de traiter directement les dates avec les fonctions de php.
Le premier inconvénient de ce format est qu'il a un intervalle de validité restreint entre les années 1971 et 2037.
Le second inconvénient est qu'il est nécessaire d'utiliser la fonction FROM_UNIXTIME de mysql pour utiliser les fonctions de manipulations de date de MySQL.
Date MySQL
format : YYYY-MM-DD HH:MM:SS
exemple : 1983-07-30 00:00:00
C'est tout simplement le format que je préconise car il a un intervalle de validité de l'an 0 à l'année 9999 (ce qui nous laisse de la marge :D), et il donne accès aux fonctions date de mysql sans aucune conversion nécessaire.
De plus en utilisant la fonction UNIX_TIMESTAMP pour convertir une date en timestamp unix il est facile de manipuler ces dates en php.
Image : iheartlinen