我正在使用sql服務器,並希望保存班次數據不重疊。 我的表格有StartDateTime和EndDateTime列,這些班次最有可能持續幾周和/或幾個月(不是每日基數)。 即每行有1個月的早晨,夜晚和夜班(例如)。 我需要sql查詢給出結果如果重疊找到,所以我不允許用戶/用戶界面添加重疊數據。移位重疊發現
感謝, Najjay
我正在使用sql服務器,並希望保存班次數據不重疊。 我的表格有StartDateTime和EndDateTime列,這些班次最有可能持續幾周和/或幾個月(不是每日基數)。 即每行有1個月的早晨,夜晚和夜班(例如)。 我需要sql查詢給出結果如果重疊找到,所以我不允許用戶/用戶界面添加重疊數據。移位重疊發現
感謝, Najjay
嘗試此查詢:
select 1
from shiftsTable
where (startdate <= @startDate and endDate >= @endDate)
or
(startdate >= @startDate and endDate <= @endDate)
or
(startdate <= @startDate and endDate <= @endDate)
問題仍然存在,如果我做夜班,即從10:00 PM到下一個日上午06:00 AM.Morning和中午過後還可以。
什麼是「SlotStartTime」和「SlotEndTime」列的類型?這些應該是類型「日期時間」的查詢工作。另外值得比較的也應該是類型「datetime」。這兩個(SlotStartTime,SlotEndTime)列的 –
數據類型是DateTime。 SP也將這些參數作爲日期時間,即 – Najjay
在我的查詢中,用'> ='替換'>',用'<='替換'<'並再次檢查。 –
您能提供一些樣品數據嗎? –
親愛bviale, 我使用這個查詢, SELECT TimeslotID FROM [AvlGroupTimeslots] WITH(NOLOCK)WHERE GroupCategoryId = @ GroupCategoryID AND IsActive = 1 AND (CONVERT(TIME,SlotStartTime)<= CONVERT(TIME,@ slotEndTime )AND CONVERT(TIME,SlotEndTime)> = CONVERT(TIME,@ slotStartTime))AND (CONVERT(DATE,SlotStartTime)<= CONVERT(DATE,@ slotEndTime)AND CONVERT(DATE,SlotEndTime)> = CONVERT(DATE,@ slotStartTime)) AND \t(TimeSlotID <> 0 AND TimeSlotID <> @timeSlotID) – Najjay