Operaciones con fechas almacenadas como integer
Hay veces en la vida de todo programador en las que uno ha de enfrentarse a lo que mi hermano y yo llamamos Código Legacy: Esto es, aplicaciones hechas cuando reinaba Carolo y que aún siguen en su fase de vida útil, o de desmontaje.
Operaciones con fechas almacenadas como integer
Toquetear cosas en aplicaciones de estas es bastante chulo; uno puede aprender mucho viendo cómo estaba hecho el código, y a menudo sirve para volver la vista atrás y sonreir con todo lo ya sabido. Bueno, o sonreir y punto.Sin embargo, y no todo van a ser bendiciones, a veces hay trapos sucios con los que bandearse, y lo que hoy os contamos es uno de esos: bases de datos que almacenan las fechas con el resultado de la función time(). Time() en php, tal y como podéis comprobar en la documentación oficial, devuelve el valor de la fecha actual en Unix.
Esto no sería una gran novedad para los que no estamos familiarizados con time() frente a otras funciones de fechas. Al menos, si no fuera porque time() se calcula en segundos desde 1970 (1 de Enero de 1970 00:00:00 GMT); y si, es un integer. Me gustará saber, dicho sea de paso, que va a pasar con todos los sistemas de 32 bits que están usando este tipo de configuraciones al llegar al 2020…
Al final, el tema de operaciones que necesitaba para formatear los datos en mi salida php. Personalmente nunca me había parado a pensar en esto como una forma eficaz de almacenamiento de fechas frente a date() u otros formatos más específicos que un integer como un datetime o un timestamp; pero he de reconocer que simplifica mucho la gestión de operaciones con fechas por el simple hecho de manejarlo así.
Curioso eso de tener fechas almacenadas como integer. Tiene sus inconvenientes, pero también sus ventajas. Muchos grandes sistemas actuales usan las fechas de este modo. Por algo será.
Y tú… ¿Qué opinas? ¿Se te ocurre otra manera de resolverlo?