Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Obliczanie różnicy między dwoma znacznikami czasu w Oracle w milisekundach

Po odjęciu dwóch zmiennych typu TIMESTAMP , otrzymasz INTERVAL DAY TO SECOND co obejmuje liczbę milisekund i/lub mikrosekund w zależności od platformy. Jeśli baza danych działa w systemie Windows, systimestamp zazwyczaj będą miały milisekundy. Jeśli baza danych działa w systemie Unix, systimestamp zazwyczaj będą miały 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

Możesz użyć EXTRACT funkcja wyodrębniania poszczególnych elementów 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

Następnie możesz przekonwertować każdy z tych składników na milisekundy i dodać 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

Zwykle jednak bardziej przydatne jest posiadanie albo INTERVAL DAY TO SECOND reprezentacja lub posiadanie oddzielnych kolumn dla godzin, minut, sekund itp. zamiast obliczania całkowitej liczby milisekund między dwoma TIMESTAMP wartości.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaki jest odpowiednik SQL Server APPLY w Oracle?

  2. Wywołanie procedury składowanej Oracle z parametrem wyjściowym z SQL Server

  3. Kiedy wywołuję PreparedStatement.cancel() w aplikacji JDBC, czy faktycznie zabija to w bazie danych Oracle?

  4. SQL nie rozpoznaje aliasu kolumny w klauzuli where

  5. PRZYPADEK vs. DEKODOWANIE