Pregunta

Si necesita que su aplicación web se traduzca entre zonas horarias por usuario, ¿por qué no usa TIMESTAMP en todos los campos de fecha / hora? Tenga en cuenta que los valores TIMESTAMP se almacenan en UTC y se convierten en la zona horaria establecida para la conexión cuando se recuperan.

Hice esta pregunta en el IRC, leí la documentación de MySQL, busqué en Google y pregunté a mis compañeros de trabajo, y aún tengo que encontrar una razón convincente para no usar TIMESTAMP.

Nota: Entiendo que TIMESTAMP tiene un rango limitado de 1970 - 2038; Eso no va a ser un problema en mi caso. Además, estoy usando PHP con MySQL.

¿Fue útil?

Solución

DATETIME es para fechas y horas arbitrarias que utiliza en sus datos.

TIMESTAMP es para cuando desea que la hora se actualice automáticamente. Si desea saber cuándo se insertó / actualizó la fila, use un TIMESTAMP.

Además, tenga en cuenta que TIMESTAMP solo se almacena en UTC: se convierte a la zona horaria local del servidor antes de que se transmita nuevamente como parte de una consulta.

En su caso, es mejor usar un DATETIME. Si está preocupado por UTC, está bien, solo cree sus fechas en UTC en lugar de usar la hora local. Utilice UTC_TIMESTAMP .

Otros consejos

Creo que tu respuesta está aquí:

  

Entiendo que TIMESTAMP tiene un rango limitado de 1970 - 2038; eso no va a ser un problema en mi caso.

Tendría cuidado al hacer suposiciones sobre la longevidad de los proyectos especialmente cuando se trata de esquemas de base de datos . Las bases de datos tienden a permanecer en el lugar y en uso mucho después de que las aplicaciones que las usaron hayan desaparecido.

¡La respuesta de Randalpho es incorrecta en muchos hechos!

Las marcas de tiempo no necesitan actualizarse automáticamente en la creación O actualizaciones.

Además, las marcas de tiempo se traducen a la hora local del CLIENTE, no de los expertos.

Solo mira los documentos de MySQL para datetime.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top