2017-03-07 2 views
0

Ich habe eine Datenbanktabelle availableTimeslot mit Feldern pk, startDate, endDate, z.Oracle SQL Abfrage über Datum

PK startDate    endDate 
1. 2017-03-07 09:00:00 2017-03-07 18:00:00 
2. 2017-03-07 18:00:00 2017-03-07 21:00:00 
3. 2017-03-08 09:00:00 2017-03-08 18:00:00 

Aufzeichnungen 9.00.00 bis 18.00.00 beginnend zeigen sie ein Morgen Zeitschlitz, während 18.00.00 bis 23.00.00 angibt, dass es ein Nachmittag Zeitschlitz

Speichern von verfügbaren Zeitschlitzdaten (z. B. 2017-03-06, 2017-03-08), die dem Kunden zur Auswahl stehen.

Kann ich mit einer Abfrage genau 10 verfügbare Zeitfenster ab dem Tag nach dem Bestelldatum abrufen?

z.B. wenn ich ein Produkt auf 2016.03.07 bestellen, dann die Abfrage

2017-03-08 09:00:00 
2017-03-08 18:00:00 
2017-03-09 09:00:00 
2017-03-09 18:00:00 
2017-03-10 ... 
2017-03-11 ... 
2017-03-13 ... 

als 12 ein Feiertag ist und nicht in der Tabelle.

Kurz gesagt, gibt es 10 Termine (5 Tage mit täglich mit AM- und PM-Sitzungen)

Bemerkung: die zur Verfügung stehende Zeitschlitzdaten in Ordnung sind, aber

+0

Bearbeiten Sie Ihre Frage und liefern Sie Beispieldaten und gewünschte Ergebnisse. –

Antwort

0
select available_date 
from (select available_date, row_number() over (order by available_date) as rn 
     from your_table 
     where available_date > :order_date 
     ) 
where rn <= 5; 

:order_date ist ein Bind-Variable - die vom Anwender/Kunden über die Schnittstelle eingegebenen Datum.

0

Wollen Sie nicht aufeinanderfolgend sein 5 für einen einzelnen Kunden?

select ts.* 
from (select ts.* 
     from customer c join 
      timeslots ts 
      on ts.date > c.orderdate 
     where c.customerid = v_customerid 
     order by ts.date asc 
    ) ts 
where rownum <= 5 
+0

Danke für Ihre Antwort, aber meine Anfrage muss nur einen Tisch decken –