有关Date的Oracle SQL查询

时间:2017-03-07 01:42:45

标签: sql oracle

我有一个名为availableTimeslot的数据库表,其中包含字段pkstartDateendDate,例如

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

从09:00:00到18:00:00开始的记录表明它是早晨时段,而18:00:00到23:00:00表示它是下午时段

存储可用的时间段日期(例如2017-03-06,2017-03-08),供客户选择一个。

我可以使用一个查询从订单日期后的第二天开始准确获取10个可用时段日期吗?

e.g。如果我在2016-03-07订购产品,则查询返回

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 ... 

因为12是公众假期而不在表格中。

简而言之,它会返回10个日期(每天有5天,上午和下午会议)

备注:可用的时段日期是有序的,但可能不是连续的

2 个答案:

答案 0 :(得分:0)

您是否希望单个客户使用5个?

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

答案 1 :(得分: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是绑定变量 - 用户/客户通过界面输入的日期。