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