Jag tror att ditt problem inte är CONVERT_TZ
, men FROM_UNIXTIME
.
FROM_UNIXTIME
tar ett heltal som argument - vilket betyder 32 bitar.
Om du tar dagens unix-tidsstämpel:1480546792
, förskjuten åt höger 24 bitar - du överskrider precis 32-bitarsgränsen för en giltig parameter på unix_time
.
from_unixtime
kan bara hantera parametrar upp till 2147483647
- Vilket betyder att det fungerar fram till 2038-01-19 04:14:07
Jag har också stött på det här problemet, och sedan 2002 är en fix för detta "under utveckling".
Tills det äntligen har lösts bör du använda en lösning med date_add
. Istället för
from_unixtime (x)
använd
date_add(from_unixtime(0), INTERVAL x second)
Resultat:
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