Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como obter a data e hora UTC do UNIX_TIMESTAMP () no MySQL


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