Oracle Select: Erzeugen eines Zeitfolge mit connect


Hatte gerade das Problem, in SQL eine Zeitfolge (also n Perdioden a xx Minuten) der Art:

08.02.2012 00:00:00 bis 08.02.2012 00:30:00
08.02.2012 00:30:00 bis 08.02.2012 01:00:00
08.02.2012 01:00:00 bis 08.02.2012 01:30:00

konfigurierbar in einer SQL Query zu brauchen. Mit Oracle Bordmitteln
geht das wie folgt:


select
  -- Berechne Ueberwachungsperioden all n Minuten)
  startDatum + ((level-1) / tagTeile) as periode_begin,
  startDatum + ( level    / tagTeile) as periode_ende
from
  (select trunc(sysdate) - 1 as startDatum, -- Ab Datum "Gestern"
          48 as tagTeile          -- alle 30 Minuten (1 Tag / 48)  
     from dual)
where
  (startDatum+(level / tagTeile)) < sysdate -- Bis zur aktuellen Uhrzeit
connect
     by level<= (sysdate - startDatum) * tagTeile -- genug rows
order by 1 desc    
     ;

Bin kein Experte in Oracle, finde ich aber ganz nützlich.

Beliebte Posts aus diesem Blog

using the birt runtime with spring boot and gradle to generate PDF from a Report Design File

Debugging angular 4 Jasmin/Karma tests with Visual Studio Code