SQL日期间隔比较
问题描述:
我有一份报告,我正在为我需要一些帮助的工作而努力。下面的查询显示了我迄今为止所做的工作,现在我需要的是能够获得每天以每天为基础放弃的每个学生的信息,而不是一次给我一个总计,换句话说就是开始例如,在04-23和05-23之间,而不是一次获得总数,我希望它在当时的每一天提供结果,意味着今天的结果将显示从04-23到04-26,并且明天它会更新以显示04-23至04-27的结果等等。如果有人能请求帮助,我将不胜感激。感谢智者SQL日期间隔比较
SELECT
COUNT (dbo.cst_AdCancelsQE_vw.priorqecounter) AS 'Prior to QE',
COUNT (dbo.cst_AdCancelsQE_vw.duringqecounter) AS 'During QE',
COUNT (dbo.cst_AdCancelsQE_vw.afterqecounter) AS 'After QE',
dbo.cst_AdCancelsQE_vw.Division,
dbo.cst_AdCancelsQE_vw.Campus,
LEFT(CONVERT (VARCHAR,dbo.cst_AdCancelsQE_vw.Startdate , 101), 10)AS 'Start Date'
FROM dbo.cst_AdCancelsQE_vw
--JOIN dbo.cst_AdStatusChanges_vw
--ON dbo.cst_AdCancelsQE_vw.NewStatDescrip = dbo.cst_AdStatusChanges_vw.NewStatDescrip
WHERE StartDate IN ('2012-04-23', '2012-05-07', '2012-03-12')
GROUP BY dbo.cst_AdCancelsQE_vw.division, dbo.cst_AdCancelsQE_vw.campus, dbo.cst_AdCancelsQE_vw.startdate
ORDER BY dbo.cst_AdCancelsQE_vw.division, dbo.cst_AdCancelsQE_vw.campus ASC
答
代替WHERE
今天,昨天和前天,你应该说今天与今天 - 3天。
WHERE StartDate Between getdate() and getdate()-3
这里有一个过去3天的例子。你应该能够修复你的需求。 这样你每天都有一个查询,如果你今天运行,你会得到最近3天的结果,当它是明天,再次运行时,你会得到一组新的结果。
感谢丹尼尔,一个问题,但如果我使用getdate的开始日期是04-23-2012这显然不是今天的日期,是不是没有工作? – frank 2012-08-13 04:08:46
不,'getdate()'只适用于今天。如果你想考虑一个不适用于'getdate()'的区间,你有几个选择。 1:做'getdate() - X',X是需要的天数。例如如果你需要一个星期前的日期,你可以在getdate() - 7和getdate() - 10之间进行操作。第二选项。您在WHERE条件之外设置变量。然后你做'在MyVariable和MyVariable之间 - 3'。希望这可以帮助。 – 2012-08-13 09:53:51