Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak uzyskać czas UTC z UNIX_TIMESTAMP() w MySQL?

Myślę, że Twoim problemem nie jest CONVERT_TZ , ale FROM_UNIXTIME .

FROM_UNIXTIME przyjmuje jako argument liczbę całkowitą - co oznacza 32 bity.

Jeśli weźmiesz dzisiejszy unix-timestamp:1480546792 , przesunięte w prawo o 24 bity - właśnie przekraczasz limit 32 bitów dla prawidłowego parametru w unix_time .

from_unixtime może obsługiwać tylko parametry do 2147483647 - Co oznacza, że ​​działa do 2038-01-19 04:14:07

Ja również spotkałem się z tym problemem, a od 2002 roku jego poprawka jest „w trakcie opracowywania”.

Dopóki nie zostanie to ostatecznie rozwiązane, powinieneś użyć obejścia, używając date_add . Zamiast

from_unixtime (x)

użyj

date_add(from_unixtime(0), INTERVAL x second)

Wynik(i):

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę uwzględnić brakujące xPaths i zachować jednolitość moich danych podczas scrapingu witryny przy użyciu metody zapytań DOMXPath?

  2. Prawidłowy sposób pisania deklaracji aktualizacji PDO

  3. MySQL COUNT() – Uzyskaj liczbę wierszy do zwrócenia przez zapytanie

  4. Jak mogę połączyć się z bazą danych MySQL za pomocą Scali?

  5. jak uzyskać listę nazw schematów baz danych MySql za pomocą java JDBC