sql >> Databáze >  >> RDS >> Mysql

Jak získat datum UTC z UNIX_TIMESTAMP() v MySQL

Myslím, že váš problém není CONVERT_TZ , ale FROM_UNIXTIME .

FROM_UNIXTIME bere jako argument celé číslo - což znamená 32 bitů.

Pokud použijete dnešní unixové časové razítko:1480546792 , posunuto doprava o 24 bitů – právě překračujete 32bitový limit pro platný parametr na unix_time .

from_unixtime dokáže zpracovat pouze parametry do 2147483647 - Což znamená, že to funguje až do 2038-01-19 04:14:07

S tímto problémem jsem se také setkal a od roku 2002 je oprava tohoto problému "ve vývoji".

Dokud to nebude konečně vyřešeno, měli byste použít náhradní řešení pomocí date_add . Místo

from_unixtime (x)

použití

date_add(from_unixtime(0), INTERVAL x second)

Výsledek(y):

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. Jak provést hromadnou korespondenci v Accessu 2016

  2. odeslat proměnnou typu REFCURSOR do uložené procedury Oracle z Javy

  3. Funkce Postgres ratio_to_report

  4. Databáze:Zřetězené funkce