Retomo el tema para hacerte un par de aclaraciones sobre tu problema.
El formato de fecha UNIX TIMESTAMP adolece de
un problema que afectará a los sistemas en el año 2038, y que se origina en que los contadores internos de los sistemas de 32 bits usan un entero con signo de 32 its para realizar los calculos. Esto hace que el mayor número representable positivo sea 2147483647, que corresponde a un INT. Cuando se supera ese valor se produce un desborde y el número no puede representar la fecha.
Este asunto generará un fallo el 19/01/2038 a las 03:14:07, que hará colapsar todo sistema que trabaje en 32 bits. No hay soluciones para eso, más que migrar todo el software a 64 bits.
Se estima que para la llegada de esa fecha el software en uso será todo de 64 bits.
¿Nunca te intrigó por qué se están fabricando ultimamente sólo PCs de 64 bits...?
Bueno, esa es una de las razones fundamentales.
Como sea, el problema que tienes no es tal, es simplemente que estás tratando de manipular los datos con el rango incorrecto de enteros, o bien esos datos no son UNIXTIME reales, sino otra cosa.
Esto último se hace especialmente evidente cuando haces la conversión inversa: Ver qué numero le corresponde a la fecha que dices debería tener:
Código MySQL:
Ver original+---------------------------------------+
+---------------------------------------+
| 1320933225 |
+---------------------------------------+
Como puedes ver, a la fecha
10/11/2011 10:53:45 le corresponde el
1320933225 y no el
129653924254880000.
Código MySQL:
Ver original+---------------------------------------+
+---------------------------------------+
| 1320933909 |
+---------------------------------------+
Y a la fecha
10/11/2011 11:05:09 le corresponde
1320933909 y no
129653931093710000.
En otras palabras: Lo que
crees que es, no es lo que
realmente es... y ni siquiera se le parece.
Te sugiero que analices la fuente de datos y verifiques qué es lo que realmente está almacenando y cómo.