SQL查询来限制结果昨天和一个指定的8小时内

问题描述:

进行了广泛搜索通过这个网站(及其他),试图缩小来实现的SQL查询将返回一组的考勤数据结果的最佳方式昨天在8小时的班次窗口内。挑战之处在于,这是在专有(DG-LOGIK)数据可视化工具中编写的,该工具使用JDBC连接器连接SQL数据库,因此某些标准日期时间函数无法识别。SQL查询来限制结果昨天和一个指定的8小时内

,我已经成功地得到了工作的查询是:

SELECT MAX(TimeOfSample) as TimeOfSample, SUM(SampleValue) as SampleValue FROM {trend_log} 
WHERE TimeOfSample >= GETDATE()-1 AND (DATEPART(HOUR,TimeOfSample)>=07 AND DATEPART(HOUR,TimeOfSample)<=15) 
GROUP BY 
DATEPART(YEAR, TimeOfSample), 
DATEPART(MONTH, TimeOfSample), 
DATEPART(DAY, TimeOfSample), 
DATEPART(HOUR,TimeOfSample), 
(DATEPART(MINUTE,TImeOfSample)/15) 
ORDER BY TimeOfSample 

挑战:如果你是移位今天和昨天的成绩回报今天的时间内。我试图限制TimeOfSample = GETDATE()-1,但我得到了相等比较的错误返回。我怎样才能限制这个查询只返回昨天?

我想这是你想要的where条款:

WHERE TimeOfSample >= CAST(GETDATE()-1 as date) AND 
     TimeOfSample < CAST(GETDATE() as date) AND 
     (DATEPART(HOUR,TimeOfSample) >= 07 AND DATEPART(HOUR, TimeOfSample) <= 15) 

你需要指定昨日的上限和下限。