Jag tror att ditt problem inte är CONVERT_TZ , men FROM_UNIXTIME .
FROM_UNIXTIME tar ett heltal som argument - vilket betyder 32 bitar.
Om du tar dagens unix-tidsstämpel:1480546792 , förskjuten åt höger 24 bitar - du överskrider precis 32-bitarsgränsen för en giltig parameter på unix_time .
from_unixtime kan bara hantera parametrar upp till 2147483647 - Vilket betyder att det fungerar fram till 2038-01-19 04:14:07
Jag har också stött på det här problemet, och sedan 2002 är en fix för detta "under utveckling".
Tills det äntligen har lösts bör du använda en lösning med date_add . Istället för
from_unixtime (x)
använd
date_add(from_unixtime(0), INTERVAL x second)
Resultat:
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