使用DATEPART for AM可正常工作,但不适用于PM查询

时间:2012-11-07 13:01:11

标签: sql sql-server datepart

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

我刚刚注意到的问题是,当报告以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);

2 个答案:

答案 0 :(得分:0)

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

干杯, 希望它有所帮助!

答案 1 :(得分: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个小时。

相关问题