Guía / límites

El problema del año 2038

Entiende por qué los segundos Unix con signo de 32 bits desbordan en enero de 2038, qué sistemas se ven afectados y cómo probarlos.

El límite

Un entero con signo de 32 bits almacena de −2.147.483.648 a 2.147.483.647. Interpretado como segundos Unix, el límite positivo es 2038-01-19T03:14:07Z. Añadir un segundo desborda esa representación.

Quién debe comprobarlo

Los sistemas operativos antiguos, dispositivos integrados, columnas de bases de datos y protocolos binarios aún pueden usar segundos de 32 bits. Un timestamp de 64 bits o un tipo de fecha adecuado aleja el límite práctico, pero toda la cadena debe estar preparada.

Cómo probar

Pasa valores a ambos lados del límite por el analizador, almacenamiento, serialización de API, entorno cliente e informes. Un servidor moderno no protege automáticamente una columna antigua o un protocolo de dispositivo.

Otros límites

Comprueba también el intervalo de campos en milisegundos, los enteros seguros de JavaScript y las restricciones de APIs externas. Unidades y tipos diferentes alcanzan sus límites en fechas distintas.

Verificar el límite

Segundos UnixFecha UTC
21474836462038-01-19 03:14:06
21474836472038-01-19 03:14:07
21474836482038-01-19 03:14:08

El tercer valor es válido con una representación más amplia. Supera el límite de un entero de 32 bits con signo, no la definición del tiempo Unix. Puedes comprobarlo en el conversor seleccionando segundos.

El intervalo de ese tipo es de −2.147.483.648 a 2.147.483.647. Si un sistema antiguo desborda en lugar de rechazar el valor, el siguiente número puede convertirse en negativo y mostrar una fecha de 1901. El resultado concreto depende de la plataforma y del almacenamiento.

Revisar toda la cadena de datos

Comprueba la columna de la base de datos, el controlador, el contrato de la API, la serialización y el tipo de la aplicación. Ampliar una columna no elimina un cast a 32 bits en un cliente o dispositivo. Escribe y vuelve a leer valores a ambos lados del límite; compara el entero almacenado, no solo la fecha.

Utiliza un entero más amplio o un tipo de fecha compatible en toda la cadena. Un entero de 32 bits sin signo tiene otro límite posterior, pero no resuelve las fechas negativas ni todas las restricciones de los protocolos.

Separar los límites técnicos

El problema de 2038 afecta a segundos con signo de 32 bits. El límite de enteros exactos de JavaScript y el rango de fechas del navegador son problemas distintos. Los milisegundos, microsegundos y nanosegundos aumentan la magnitud del valor.

Consulta segundos y milisegundos. El conversor por lotes ayuda a revisar un archivo de migración, pero no inspecciona ni cambia los tipos de tu sistema.

Normas y documentación técnica

Herramientas / 01—06

Más herramientas de timestamp

Cada herramienta comienza con una entrada concreta y ofrece una respuesta precisa.