我的一個項目中的sql查詢有一個問題。實際上,我必須在某個表中檢查一個DateTime列,並且有三個班次,即,我必須根據正在落在相應班次中的RegisteredDateTime列獲取記錄。我們有以下換擋時機,移位將在24種小時格式在sql服務器查詢中移位明智的日期時間檢查
Shift1 : 07:00:00-12:00:00
Shift2 : 12:00:00-22:00:00
Shift3 : 22:00:00-07:00:00
我的問題是我正確地得到記錄和SHIFT1 SHIFT2,但沒有記錄就在於shift3。我正在輪到,解決這個問題。我使用下面的搜索查詢在上面的查詢用於SHIFT1的所有班次
SELECT RequestNumber
FROM Table
WHERE (CONVERT(Time, RegisteredDateTime) BETWEEN '" & Shift1.Split("-")(0) &"' AND ' " & Shift1.Split("-")(1) & "')
獲取的記錄,同樣我檢查SHIFT2和Shift3也。
您好每一個,最後由@ AnandPhadke給出的主意工作對我來說,它的最終查詢我使用
Dim StartNumber As Integer = Convert.ToInt32(Shft3Arr(1).Split(":")(0))
Dim EndShift As String = (StartNumber - 1) & ":59:59"
query += "(CONVERT(Time, Complaints.RegisteredDateTime) >= '" + Shft3Arr(0) + "') OR (CONVERT
(Time, DATEADD(DD, 1, Complaints.RegisteredDateTime)) <= '" + EndShift + "')"
可以更改架構,以便你存儲移位開始和持續時間轉移?這將是更合乎邏輯的imo。 – tenfour