sql >> Database teknologi >  >> RDS >> Mysql

Sådan får du UTC Datetime fra UNIX_TIMESTAMP() i MySQL

Jeg tror, ​​dit problem ikke er CONVERT_TZ , men FROM_UNIXTIME .

FROM_UNIXTIME tager et heltal som argument - hvilket betyder 32 bit.

Hvis du tager dagens unix-tidsstempel:1480546792 , flyttet til højre 24 bit - du overskrider lige 32-bit grænsen for en gyldig parameter på unix_time .

from_unixtime kan kun håndtere parametre op til 2147483647 - Hvilket betyder, det virker indtil 2038-01-19 04:14:07

Jeg har også stødt på dette problem, og siden 2002 er en rettelse til dette "under udvikling".

Indtil det endelig er løst, bør du bruge en løsning ved at bruge date_add . I stedet for

from_unixtime (x)

brug

date_add(from_unixtime(0), INTERVAL x second)

Resultat(er):

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. Hurtigste måde at indsætte objekt på, hvis det ikke findes med SQLAlchemy

  2. Konvertering af valuta i MySQL ved hjælp af en join

  3. ORACLE/ASP.NET:ORA-2020 - For mange databaselinks... hvad forårsager dette?

  4. Hvordan skylles performance_schema-statistik uden at genstarte MySQL?