在我的一个项目中,我遇到了一个 sql 查询问题。实际上,我必须用三个班次检查某个表中的一个 DateTime 列,即,我必须根据各班次中的 RegisteredDateTime 列获取记录。我们有以下班次时间,班次将采用 24 小时制
Shift1 : 07:00:00-12:00:00
Shift2 : 12:00:00-22:00:00
Shift3 : 22:00:00-07:00:00
我的问题是我在 shift1 和 shift2 中正确获取记录,但记录不在 shift3 中。我正在四处走动,以解决这个问题。我正在使用以下搜索查询来获取所有班次中的记录
SELECT RequestNumber
FROM Table
WHERE (CONVERT(Time, RegisteredDateTime) BETWEEN '" & Shift1.Split("-")(0) &"' AND ' " & Shift1.Split("-")(1) & "')
上面的查询用于 Shift1,同样我也在检查 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 + "')"