sql >> Databáze >  >> RDS >> Oracle

Výpočet rozdílu mezi dvěma časovými razítky v Oracle v milisekundách

Když odečtete dvě proměnné typu TIMESTAMP , získáte INTERVAL DAY TO SECOND který zahrnuje počet milisekund a/nebo mikrosekund v závislosti na platformě. Pokud databáze běží na Windows, systimestamp bude mít obecně milisekundy. Pokud databáze běží na Unixu, systimestamp bude mít obecně mikrosekundy.

  1  select systimestamp - to_timestamp( '2012-07-23', 'yyyy-mm-dd' )
  2*   from dual
SQL> /

SYSTIMESTAMP-TO_TIMESTAMP('2012-07-23','YYYY-MM-DD')
---------------------------------------------------------------------------
+000000000 14:51:04.339000000

Můžete použít EXTRACT funkce pro extrahování jednotlivých prvků INTERVAL DAY TO SECOND

SQL> ed
Wrote file afiedt.buf

  1  select extract( day from diff ) days,
  2         extract( hour from diff ) hours,
  3         extract( minute from diff ) minutes,
  4         extract( second from diff ) seconds
  5    from (select systimestamp - to_timestamp( '2012-07-23', 'yyyy-mm-dd' ) diff
  6*           from dual)
SQL> /

      DAYS      HOURS    MINUTES    SECONDS
---------- ---------- ---------- ----------
         0         14         55     37.936

Poté můžete každou z těchto složek převést na milisekundy a sečíst je

SQL> ed
Wrote file afiedt.buf

  1  select extract( day from diff )*24*60*60*1000 +
  2         extract( hour from diff )*60*60*1000 +
  3         extract( minute from diff )*60*1000 +
  4         round(extract( second from diff )*1000) total_milliseconds
  5    from (select systimestamp - to_timestamp( '2012-07-23', 'yyyy-mm-dd' ) diff
  6*           from dual)
SQL> /

TOTAL_MILLISECONDS
------------------
          53831842

Normálně je však užitečnější mít buď INTERVAL DAY TO SECOND reprezentaci nebo mít samostatné sloupce pro hodiny, minuty, sekundy atd. namísto výpočtu celkového počtu milisekund mezi dvěma TIMESTAMP hodnoty.



  1. Tip na PostgreSQL

  2. Zabraňte rekurzivnímu spouštění v PostgreSQL

  3. Jak aktualizovat velkou tabulku s miliony řádků v SQL Server?

  4. Importujte soubor CSV do tabulky Oracle pomocí uložené procedury