Ich denke, Ihr Problem ist nicht CONVERT_TZ
, aber FROM_UNIXTIME
.
FROM_UNIXTIME
nimmt eine Ganzzahl als Argument - was 32 Bit bedeutet.
Wenn Sie den heutigen Unix-Zeitstempel nehmen:1480546792
, um 24 Bit nach rechts verschoben - Sie überschreiten gerade die 32-Bit-Grenze für einen gültigen Parameter auf unix_time
.
from_unixtime
kann nur Parameter bis 2147483647
verarbeiten - Das heißt, es funktioniert bis zum 2038-01-19 04:14:07
Ich bin auch auf dieses Problem gestoßen, und seit 2002 ist eine Lösung dafür "in Entwicklung".
Bis es endgültig behoben ist, sollten Sie einen Workaround verwenden, indem Sie date_add
verwenden . Statt
from_unixtime (x)
verwenden
date_add(from_unixtime(0), INTERVAL x second)
Ergebnis(se):
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