responsabilidad: Este podría ser un duplicado de datetime vs. timestamp?, pero siento que no estoy convencido de las respuestas:¿Cuáles son buenas razones para elegir TIMESTAMP sobre las columnas DATETIME en MySQL?
Mi pregunta es:
¿Cuáles son las buenas razones para elegir TIMESTAMP sobre columnas DATETIME en MySQL?
Estoy bastante seguro de que no sé todo lo que hay sobre las diferencias entre los dos, así que voy a tratar de enumerar las principales ventajas de DATETIME (DT
) en comparación con marca de tiempo (TS
) que yo sepa:
DT
es legible por humanos (TS
no es sin utilizarTO_DATE
)DT
tiene un intervalo de tiempo possble de 8999 años (1000-01-01 00:00:00
a9999-12-31 23:59:59
)
(TS
sólo cerca de 68 años1970-01-01
a2038-01-19
)DT
campos parecen funcionar mejor (según this blog post)DT
se puede utilizar para el cálculo de la fecha avanzada (SELECT NOW() + INTERVAL 2 DAY
)
Y viceversa:
TS
solo necesita 4 bytes (DT
utiliza 8)TS
se almacenan como valores UTC y cambia de acuerdo con la configuraciónTS
columnas puede servir como un "log" para la vigilancia cuando una fila tiene cambios
la única razón que veo para usarlo luego la zona horaria del cliente Sería la supervisión de filas, pero mirando el rango de TIMESTAMP
, que terminará en "solo" 28 años *, prefiero ir con un disparador de inserción o actualización.
Entonces, ¿qué es lo que me falta? Todavía no veo un realmente bueno razón para elegir la marca de tiempo para cualquier propósito?
* Lo sé, esto es parece bastante largo, pero en los años 60 algunos ingenieros también decidió afeitarse 2 bytes del campo de año, debido a que sus sistemas informáticos nunca sería plazo hasta el año 2000 ... ..
Verdadero; sin embargo, no es práctico si luego necesita copiar/migrar datos a un DBMS diferente que requiere que los campos de fecha realmente contengan fechas (reales). He estado allí, hecho eso ... – sleske