gpt4 book ai didi

sql-server - sql server 查询中的明智移位日期时间检查

转载 作者:行者123 更新时间:2023-12-03 01:00:38 25 4
gpt4 key购买 nike

我在我的一个项目中遇到了 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 + "')"

最佳答案

这里最简单的事情就是改变时间(双关语)!

您的时间为 7-12,12-22,22-7*(7* 为第二天)

使用一点点魔法将它们转移到 0-5,5-15,15-24,这将与您正在测试的转变开始的日期范围相匹配,正确?

SELECT RequestNumber
FROM Table
WHERE DateAdd(hh,-7,CONVERT(Time, RegisteredDateTime))
BETWEEN ....

虽然逻辑上的好不是可控制的,所以我们以相反的方式改变范围。

SELECT RequestNumber
FROM Table
WHERE CONVERT(Time, RegisteredDateTime)
BETWEEN DateAdd(hh,7,@date1) AND DateAdd(hh,7,@date2)

关于sql-server - sql server 查询中的明智移位日期时间检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12636022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com