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