Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment obtenir la date et l'heure UTC de UNIX_TIMESTAMP() dans MySQL

Je pense que votre problème n'est pas CONVERT_TZ , mais FROM_UNIXTIME .

FROM_UNIXTIME prend un entier comme argument - ce qui signifie 32 bits.

Si vous prenez l'horodatage unix d'aujourd'hui :1480546792 , décalé vers la droite de 24 bits - vous dépassez juste la limite de 32 bits pour un paramètre valide sur unix_time .

from_unixtime ne peut gérer que les paramètres jusqu'à 2147483647 - Ce qui signifie que cela fonctionne jusqu'au 2038-01-19 04:14:07

J'ai également rencontré ce problème, et depuis 2002, un correctif est "en cours de développement".

Jusqu'à ce qu'il soit finalement résolu, vous devez utiliser une solution de contournement, en utilisant date_add . Au lieu de

from_unixtime (x)

utiliser

date_add(from_unixtime(0), INTERVAL x second)

Résultat(s) :

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