Мисля, че проблемът ви не е 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