Autor YouCode - http://www.youcode.com.ar/mysql/que-usar-datetime-o-timestamp-en-mysql-369
Diferencias entre estos dos tipos de campos que muchas veces no sabemos cual usar.
Al elegir el tipo de dato de una columna podemos entrar en una duda acerca de qué tipo de datos es el adecuado para nuestro caso de uso, si datetime otimestamp.El uso mas frecuente de timestamp en MySQL es guardar un registro de cambios de los registroso o tuplas de la base de datos, y son frecuentemente actualizados en cada cambio del registro. Comparado con datetime, hay una diferencia muy importante que muchos DBA ignoran.
Una diferencia importante es que datetime representa una fecha, como se encuentra en un calendario, y un tiempo, como puede ser visto en un reloj. Mientras que timestamp representa un punto definido en el tiempo.
Esta diferencia es muy importante si tu aplicación maneja zonas horarias. Por ejemplo, ¿hace cuanto fue exactamente la fecha 2010-01-01 17:52:00? Esto dependerá de la zona horario en que te encuentres actualmente. Pero si hablamos de X cantidad de segundos desde el 1970-01-01 00:00:00 UTC entonces estamos hablando de un punto exacto en el tiempo. Esto último es lo que representa timestamp.
En MySQL , timestamp es convertido de la zona horaria actual a UTC para el almacenamiento, y convertido de UTC a la hora local al recuperarse. Por defecto, la zona local de cada conexión es la hora del servidor, pero puede aplicarse una configuración para que la zona se establezca por cada conexión.
http://www.youcode.com.ar/mysql/que-usar-datetime-o-timestamp-en-mysql-369