sql >> Databasteknik >  >> RDS >> Mysql

Hur man hämtar UTC Datetime från UNIX_TIMESTAMP() i MySQL

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


  1. Jämför Oracle RAC HA-lösning med Galera Cluster för MySQL eller MariaDB

  2. Kan jag använda jokertecken i IN MySQL-satsen?

  3. Hjälp oss att modernisera IDE i MS Access – din röst räknas!

  4. Konfigurera ett dedikerat nätverk för tillgänglighetsgruppkommunikation