Mysql
 sql >> Database >  >> RDS >> Mysql

Come ottenere la data e l'ora UTC da UNIX_TIMESTAMP() in MySQL

Penso che il tuo problema non sia CONVERT_TZ , ma FROM_UNIXTIME .

FROM_UNIXTIME accetta un intero come argomento, il che significa 32 bit.

Se prendi il timestamp Unix di oggi:1480546792 , spostato a destra di 24 bit - stai appena superando il limite di 32 bit per un parametro valido su unix_time .

from_unixtime può gestire solo parametri fino a 2147483647 - Il che significa che funziona fino al 2038-01-19 04:14:07

Anch'io ho riscontrato questo problema e dal 2002 una soluzione è "in fase di sviluppo".

Fino a quando non sarà finalmente risolto, dovresti utilizzare una soluzione alternativa, utilizzando date_add . Invece di

from_unixtime (x)

usa

date_add(from_unixtime(0), INTERVAL x second)

Risultato/i:

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