Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So erhalten Sie UTC Datetime von UNIX_TIMESTAMP() in MySQL

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