Acho que seu problema não é
CONVERT_TZ , mas FROM_UNIXTIME . FROM_UNIXTIME recebe um Integer como argumento - o que significa 32 bits. Se você pegar o carimbo de data/hora unix de hoje:
1480546792 , deslocado para a direita 24 bits - você está apenas excedendo o limite de 32 bits para um parâmetro válido em unix_time . from_unixtime só pode manipular parâmetros até 2147483647 - O que significa que funciona até 2038-01-19 04:14:07 Também encontrei esse problema e, desde 2002, uma correção para isso está "em desenvolvimento".
Até que finalmente seja resolvido, você deve usar uma solução alternativa, usando
date_add . Ao invés de from_unixtime (x)
usar
date_add(from_unixtime(0), INTERVAL x second)
Resultados):
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