Comme d'autres l'ont dit, les horodatages peuvent représenter une plus petite plage de dates (de 1970 à 2038). Cependant, les horodatages mesurent le nombre de secondes écoulées depuis l'Epoque Unix (1970-01-01 00:00:00 UTC), ce qui les rend indépendants du fuseau horaire, tandis que DATETIME stocke une date et une heure sans fuseau horaire. En d'autres termes, les horodatages référencent sans ambiguïté un point particulier dans le temps, alors que le point précis auquel un DATETIME fait référence nécessite un fuseau horaire (qui n'est pas stocké dans un champ DATETIME). Pour voir pourquoi cela peut être important, réfléchissez à ce qui se passe si nous changeons notre fuseau horaire.
Disons que nous voulons stocker le datetime 2010-03-27 12:00 UTC. Si nous stockons cela et que nous l'extrayons en utilisant un horodatage ou DATETIME, il ne semble généralement pas y avoir de différence. Cependant, si le serveur change maintenant pour que le fuseau horaire local soit UTC + 01, alors nous obtenons deux résultats différents si nous sortons le datetime.
Si nous définissions le champ sur DATETIME, il signalerait le datetime en tant que 2010-03-27 12:00, malgré le changement de fuseau horaire. Si nous définissions le champ sur un horodatage, la date serait signalée comme 2010-03-27 11:00. Ce n'est pas un problème avec l'un ou l'autre type de données - c'est juste le résultat du fait qu'ils stockent des informations légèrement différentes.
Similaire: http://stackoverflow.com/questions/409286/datetime-vs-timestamp –