Estoy en un dilema sobre el ahorro de valores de fecha y hora en el formato TIMESTAMP de MySQL vs en un formato INT no identificado personalizado. Las principales consideraciones aquí son la velocidad de recuperación, los cálculos de rango apropiados en PHP y el formato ocasional en valores legibles por humanos.Uso de TIMESTAMP de MySQL versus almacenamiento de marcas de tiempo directamente
El espacio de almacenamiento requerido para cada tipo y sus rangos:
DATETIME 8 bytes '1000-01-01 00:00:00' to '9999-12-31 23:59:59'
TIMESTAMP 4 bytes '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC
UNSIGNED INT 4 bytes (Maximum Value 4294967295)
I no necesita la gama de DATETIME en absoluto. Estoy dividido entre TIMESTAMP y UNSIGNED INT.
Los argumentos a favor de UNSIGNED INT:
- Una marca de tiempo UNIX de 4294967295 convertidos a Sun, 07 Feb 2106 06:28:15 GMT que es más que TIMESTAMP y lo suficientemente bueno para mí
- Comparando estos marcas de tiempo directamente en PHP sería más rápido en lugar de convertir TIMESTAMP a través strtotime() y luego compararlos
la única ventaja TIMESTAMP daría a mí es cuando estoy leyendo en los valores de la tabla MySQL de forma manual y necesito ' verlas.
¿Hay alguna razón convincente para usar TIMESTAMP y no una INT NO FIRMADA?
See related: [datetime vs timestamp?] (Http://stackoverflow.com/questions/409286/datetime-vs-timestamp) – JYelton
Una marca de tiempo de 32 bits solo irá hasta enero de 2038, y muchas bibliotecas todavía usan 32bit time_t en lugar de 64 bits, por lo que puede encontrarse con problemas de portabilidad. Internamente, PHP almacena las marcas de tiempo/fecha y hora en formato numérico de todos modos, y solo se convierte en las bonitas cadenas de tipo yyyy-mm-dd en la recuperación. –