0

我正在使用查询为我们的第三班人员提取报告。

当报告以 0 个结果邮寄时,我刚刚注意到的问题是,我现在将其设置为从下午 6 点运行到第二天早上 5:59。由于我有日期字段 = GETDATE,因此它看不到前一天晚上的结果(1800-2359)。我想把这个从-12小时拉出来,但可以随时按下按钮来查看结果。

因此,如果他们在班次结束之前推送它,它将显示一些第一班次条目。我希望它只在第二天早上从 1800-0559 运行,无论是在午夜之前还是在午夜之后按下按钮。我希望这是有道理的。我什至不确定在击中 2359 后中间是否识别到 00。我已将其内置到 VB.net 应用程序中,他们可以随时按下按钮以获得结果。这是为了让管理层跟踪正在做的事情,因为员工需要在问题发生时实时输入数据。

谢谢你的帮助。希望我有足够的意义!:D

SELECT 
   Assignment, Datemodified, General, 
   IncNumber, NextSteps, PDCRStatus, 
   RootCause, Status, Summary, 
   Timings, UserID 
FROM 
   Turnover 
WHERE DATEPART(HOUR, datemodified) between 18 and 05 
AND CONVERT(NVARCHAR(50),datemodified,103) = CONVERT(NVARCHAR(50),GETDATE(),103);
4

2 回答 2

0

我假设您想要从昨天 18:00 开始的所有数据。

SELECT 
   Assignment, Datemodified, General, 
   IncNumber, NextSteps, PDCRStatus, 
   RootCause, Status, Summary, 
   Timings, UserID 
FROM 
   Turnover 
WHERE datemodified >= dateadd(HH,-6,convert(datetime,convert(date,GETDATE())))

我正在使用 getdate 获取当前日期时间并提取日期。将其转换回日期时间时,我有 00:00,所以我用 dateadd 减去 6 小时,因此选择昨天 18:00。但是我不知道这在某些时间应该如何表现。它总是会转到昨天的 18:00,这意味着当您在 23:59 开始时,您会看到 29 小时 59 分钟的间隔。在 00:00 开始时,您将看到 6 小时。

于 2013-12-20T10:52:02.680 回答
0

我猜当您检查特定时间范围时,日期会随着时间的推移而变化,即一天的 1800 小时到下一天的 0500 小时。我看到您的查询仅检查时间,但不考虑日期。我想如果你可以一起检查日期和时间,它应该可以工作。到目前为止,我的机器上没有 sql server,否则会帮助您进行示例查询。

干杯,希望它有帮助!

于 2012-11-07T13:12:23.117 回答