我有一个包含两列的表,其中包含一个整数值
1- StartTime as int 2-EndTime as int
现在我必须将当前时间的小时值与这些时间进行比较。
我正在执行查询,如果当前时间的小时值大于启动时间,当前时间的小时值小于结束时间IN 24HOURS FORMAT 。
现在的问题是。
如果StartTime = 19和 结束时间= 7(早上)
如果当前小时值返回20
然后20&gt; 19它的真实但20 <7这个值变得虚假......
20日晚7点到早上7点之间......但是这个查询正在变得虚假异常......
请帮帮我......
我将非常非常感谢你们所有人.....
我再次详细解释这个问题
DATEPART(hh,GETDATE())---这个函数会给我一个小时的值
就像下午8:00:00一样,这将只返回20
在我的表中,我将starttime和endtime存储为Integer值
像开始时间一样 - 19 结束时间 - 7所以现在20将与两个值比较,如
20&gt; 19 ----真的 20&lt; 7 -----这会是假的
但根据我的情况,它应该是正确的,因为我正在检查晚上8点,早上7点......晚上8点到晚上7点到早上7点(这是我在开始时间和结束时间)
答案 0 :(得分:1)
DECLARE @current_Hour INT
SELECT @current_hour = DATEPART(HH,GETDATE())
--SELECT @current_hour = 20
DECLARE @startTime INT
SET @startTime = 19
DECLARE @endtime INT
set @endTime = 7
SELECT
CASE
WHEN @startTime <= @endTime THEN
CASE WHEN @current_hour BETWEEN @startTime AND @endtime THEN 1 ELSE 0 END
ELSE
CASE WHEN @current_hour BETWEEN @endtime AND @startTime THEN 0 ELSE 1 END
END
答案 1 :(得分:0)
如果您没有日期数据,并且如果CurrentTime大于StartTime并且EndTime小于StartTime,您可以认为您的EndTime等于24 + EndTime(或者您可以忽略EndTime验证)但是在这种情况之外有很多可能性。你应该解释一下你的问题。
如果日期对您不重要
WHERE
(
@CurrentTime > StartTime
AND StartTime > EndTime
)
OR
(
@CurrentTime > StartTime
AND StartTime < EndTime
AND @CurrentTime < EndTime
)
答案 2 :(得分:0)
解决方案非常简单:
@Date > StartTime
AND (
@Date < EndTime
OR
EndTime < Startime
)
请注意,如果@Date可以“早上第二天”,它(和NOTHING)将无效。