2014-04-28 51 views
0

想象一下,我的工作時間安排從上午9點到下午6點。它被分成15分鐘的區塊,約會(15分鐘的增量)可以適用於可用的時間。現在查詢在計劃中查找時間塊

,如果我需要插入一個新的任命是長45分鐘有一個簡單的查詢來查找的時間塊,提供給適合約會給定日期

基本表的設計是

AppointmentId 
Date 
StartTime 
Length - 15 minute incremenents 

我想獲得可用時間的列表,以供選擇,所以如果在指定日期的唯一的約會是30分鐘一個在9:30那麼次列表將

(No times before 9:30 as the 45 minute appointment wont fit) 
10:15 
10:30 
10:45 
... 
5:15pm (last time of the day the appointment will fit) 

回答

1

通過使用排序功能(即Row_Number())設置在每一天的每一行(讓說,它的名字是rn),然後通過這個條件q2.rn = q1.rn-1那麼你有約會end下一個約會的start旁邊加入這個查詢它自號,然後計算datediff(mi)在這個endstart,所以這個值是gap,然後編寫另一個查詢包裝這個查詢過濾記錄有gap >= yourNeededTime。同樣,對於一天的開始和一天的結束,您可以創建兩個虛擬記錄,一個用於上午九點,另一個用於下午六點,以便您可以處理第一個約會和第二個約會到第一個約會的時間。

我希望這可以幫助