Estoy usando el sistema Ubuntu de 64 bits.
Actualmente estoy trabajando en un proyecto que incorpora MariaDB. Estoy planeando introducir una técnica de marca de tiempo en el proyecto para que las personas reciban la hora correcta para diferentes zonas horarias.
He escuchado y leído algunos artículos sobre el problema del año 2038 para la marca de tiempo. Muchos artículos sugieren que usemos un sistema de 64 bits para comprar un poco más de tiempo.
¿A cuánto tiempo se refiere este "bit"? ¿Es lo suficientemente largo para que podamos administrar aplicaciones web hasta el final? Si ese no es el caso, ¿es como una extensión de solo dos años, entonces cuando llegue el año 2040, vamos a tener aplicaciones que no funcionen adecuadamente?
time_t
enteros de 64 bits le darán un 'bit' más de tiempo, hasta las 15:30:08 del domingo 4 de diciembre de 292,277,026,596. Espero que sea lo suficientemente largo para su aplicación;)Respuestas:
Bueno, si hay una opción para comprar literalmente un "bit", es decir, transferir de un entero de 32 bits con signo a un entero de 32 bits sin signo, las cosas siguen funcionando en 2106.
La transferencia a 64 bits es "algo mejor". Obtienes cientos de miles de millones de años de resolución.
Y Ubuntu hace esto:
Sin embargo, ese es el nivel del sistema operativo. El hecho de que Ubuntu use un número entero de 64 bits para sus tiempos no significa que MySQL / MariaDB lo usará para almacenar sus marcas de tiempo. Si las fechas anteriores a 2038 son importantes para su ahora, comience a realizar las pruebas de inmediato.
En realidad, puedo ahorrarte algo de tiempo. Todavía está roto Este error se informó hace más de una década, pero su prueba principal todavía falla con un int de 64 bits.
Esto ni siquiera es almacenamiento. Es un poco patético.
(Y sí, eso se ejecutó en MariaDB, versión 10.1)
fuente
No lo guardes como un entero en absoluto. Almacénelo como una cadena de fecha con formato ISO 8601 . Este es el formato estándar utilizado en Internet.
fuente