sql >> Database >  >> RDS >> Mysql

Hoe u UTC Datetime kunt krijgen van UNIX_TIMESTAMP() in MySQL

Ik denk dat uw probleem niet CONVERT_TZ is , maar FROM_UNIXTIME .

FROM_UNIXTIME neemt een geheel getal als argument - wat 32 bit betekent.

Als u de Unix-tijdstempel van vandaag gebruikt:1480546792 , 24 bit naar rechts verschoven - u overschrijdt net de 32-bits limiet voor een geldige parameter op unix_time .

from_unixtime kan alleen parameters verwerken tot 2147483647 - Dat betekent dat het werkt tot 2038-01-19 04:14:07

Ik ben dit probleem ook tegengekomen en sinds 2002 is een oplossing hiervoor "in ontwikkeling".

Totdat het eindelijk is opgelost, moet je een tijdelijke oplossing gebruiken, met behulp van date_add . In plaats van

from_unixtime (x)

gebruik

date_add(from_unixtime(0), INTERVAL x second)

Resultaat(en):

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. Kan LINQ-naar-SQL bij het invoegen niet-gespecificeerde kolommen weglaten, zodat een standaardwaarde voor de database wordt gebruikt?

  2. Verbinding maken met Oracle Database met Sql Server Integration Services

  3. OVER-clausule in Oracle

  4. Tabel splitsen na X aantal rijen &tekst toevoegen in While-lus (met behulp van TCPDF)