sql >> Database >  >> RDS >> Oracle

Het verschil berekenen tussen twee tijdstempels in Oracle in milliseconden

Wanneer u twee variabelen van het type TIMESTAMP . aftrekt , krijg je een INTERVAL DAY TO SECOND die een aantal milliseconden en/of microseconden omvat, afhankelijk van het platform. Als de database op Windows draait, systimestamp zal over het algemeen milliseconden hebben. Als de database op Unix draait, systimestamp zal over het algemeen microseconden hebben.

  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

U kunt de EXTRACT . gebruiken functie om de individuele elementen van een 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

U kunt vervolgens elk van deze componenten converteren naar milliseconden en ze optellen

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

Normaal gesproken is het echter handiger om ofwel de INTERVAL DAY TO SECOND weergave of om aparte kolommen te hebben voor uren, minuten, seconden, enz. in plaats van het totale aantal milliseconden tussen twee TIMESTAMP te berekenen waarden.



  1. Hoe te vinden of een waarde bestaat binnen een VARRAY

  2. Waarom hebben gehele getallen in databaserij-tuple een 'L'-achtervoegsel?

  3. Detecteer dubbele items in recursieve CTE

  4. MySQL:Verleen **alle** rechten op database