Мисля, че проблемът ви не е CONVERT_TZ
, но FROM_UNIXTIME
.
FROM_UNIXTIME
приема цяло число като аргумент - което означава 32 бита.
Ако вземете днешния unix-timestamp:1480546792
, изместен надясно 24 бита - вие просто надвишавате 32-битовото ограничение за валиден параметър на unix_time
.
from_unixtime
може да обработва само параметри до 2147483647
- Което означава, че работи до 2038-01-19 04:14:07
Сблъсквал съм се и с този проблем и от 2002 г. корекция за него е „в процес на разработка“.
Докато най-накрая бъде решен, трябва да използвате заобиколно решение, като използвате date_add
. Вместо
from_unixtime (x)
използвайте
date_add(from_unixtime(0), INTERVAL x second)
Резултат(и):
SELECT from_unixtime (2147483647); //2038-01-19 04:14:07
SELECT from_unixtime (2147483648); //NULL
SELECT date_add(from_unixtime(0), Interval 2147483647 second) //2038-01-19 04:14:07
SELECT date_add(from_unixtime(0), Interval 2147483648 second) //2038-01-19 04:14:08