Come altri hanno già detto, i timestamp possono rappresentare un intervallo più piccolo di datetimes (dal 1970 al 2038). Tuttavia, i timestamp misurano il numero di secondi da Unix Epoch (1970-01-01 00:00:00 UTC), rendendoli quindi indipendenti dal fuso orario, mentre DATETIME memorizza una data e un'ora senza fuso orario. In altre parole, i timestamp fanno riferimento in modo univoco a un particolare punto temporale, mentre il punto esatto nel tempo a cui si riferisce DATETIME richiede un fuso orario (che non è memorizzato in un campo DATETIME). Per capire perché questo può avere importanza, considera cosa succede se cambiamo il nostro fuso orario.
Supponiamo di voler memorizzare il datetime 2010-03-27 12:00 UTC. Se lo memorizziamo e lo recuperiamo utilizzando un timestamp o DATETIME, in genere non sembra esserci differenza. Tuttavia, se il server ora cambia in modo che il fuso orario locale sia UTC + 01, otteniamo due risultati diversi se estraiamo il datetime.
Se avessimo impostato il campo su DATETIME, esso segnalerebbe il datetime come 2010-03-27 12:00, nonostante la modifica del fuso orario. Se avessimo impostato il campo su un timestamp, la data sarebbe stata segnalata come 2010-03-27 11:00. Questo non è un problema con entrambi i tipi di dati - è solo il risultato del fatto che essi memorizzano informazioni leggermente diverse.
fonte
2010-03-28 17:32:40
Simili: http://stackoverflow.com/questions/409286/datetime-vs-timestamp –