type example column php sql mysql

php - column - timestamp mysql example



Unix timestamp VS datetime (3)

Posible duplicado:
datetime vs marca de tiempo?

Tengo una tabla Mysql, que tiene una columna add_date . Hace un seguimiento de la fecha / hora en que se agregó el registro a la base de datos.

Consultas basadas en esta tabla:

  1. Mostrar cuando el registro se agregó en el formato: hace 2 horas, hace 4 semanas, hace 1 año, etc.
  2. Permitir a los usuarios buscar registros insertados en cualquier día / mes / año. Por lo tanto, se le puede permitir al usuario elegir ver los registros insertados en 2009 solamente.

¿Cuál sería mejor en este caso: la marca de tiempo de Unix o datetime?

En este momento estoy usando ambos, pero como la tabla tendrá millones de registros a lo largo del tiempo, tener ambas columnas puede afectar el tamaño de la base de datos.

La marca de tiempo de Unix parece ser mejor para la conversión al formato de hace 2 hours en PHP y también es independiente de la zona horaria. Pero datetime tiene una mejor legibilidad y parece más fácil hacer una consulta para una fecha / hora / año particular.

¿Tu sugerencia?


Cuando tenga la opción, diría que vaya para las fechas de mySQL.

  • No tendrá que ocuparse del número de fechas .

  • Puede consultar fácilmente intervalos de tiempo utilizando las funciones de fecha de mySQL ( BETWEEN(), DATE_ADD etc.)

  • Las consultas relacionadas con la fecha serán mucho más rápidas, especialmente cuando tiene millones de registros, ya que no tendrá que usar FROM_UNIXTIME() que puede ser costoso en consultas grandes

  • Es un juego de niños convertir los campos DATE en marcas de tiempo UNIX cuando sea necesario.


Iría a los formatos mysql, solo porque mysql tiene una gran cantidad de funciones de fecha y hora, para usar con la marca de tiempo le costará otra conversión.

pero como la tabla tendrá millones de registros a lo largo del tiempo, tener ambas columnas puede afectar el tamaño de la base de datos.

Oh mi.
¿Estás realmente preocupado en 4 megabytes adicionales de espacio?


Puede obtener lo mejor de ambos mundos utilizando una marca de tiempo de Unix y la función MySQL from_unixtime() para convertir el resultado al formato de fecha y hora donde sea necesario.