【发布时间】:2018-07-12 22:37:15
【问题描述】:
我公司的报告周是周一到周日。周一早上,我使用 Microsoft SQL Server Management Studio 运行了几个查询,以报告前一周的业务活动。我目前使用声明语句来提取所需的日期范围。只要我在星期一运行报告,这就会很好地工作。但是,如果星期一是节假日并且直到星期二我才生成报告,我需要手动修改每个查询的日期范围。如何修改我的日期过滤器以检索上一个“星期日”的记录,这样我实际运行报告的日期并不重要。
这是一个示例查询;
Declare @DATEFROM SMALLDATETIME = (CONVERT(datetime, getdate() + cast('00:00' as datetime)) - 8), @DATETO smalldatetime = (CONVERT(datetime, getdate() + cast('23:59' as datetime))-2);
Create Table #SALES ([PartNumber] CHAR(5), [DateSold] SMALLDATETIME)
Insert Into #SALES Select '10190', '6/3/2018 11:00'
Insert Into #SALES Select '10213', '6/8/2018 8:00:00 AM'
Insert Into #SALES Select '10214', '6/5/2018 9:30:00 AM'
Insert Into #SALES Select '10215', '6/4/2018 1:00:00 PM'
Insert Into #SALES Select '10217', '6/6/2018 1:00:00 PM'
Insert Into #SALES Select '10219', '6/7/2018 12:00:00 PM'
Insert Into #SALES Select '10220', '6/9/2018 3:30:00 PM'
Insert Into #SALES Select '10221', '6/11/2018 8:30:00 AM'
Insert Into #SALES Select '10222', '6/11/2018 2:30:00 PM'
Insert Into #SALES Select '10225', '6/8/2018 8:00:00 AM'
Insert Into #SALES Select '10227', '6/10/2018 9:00:00 AM'
Insert Into #SALES Select '10231', '6/10/2018 1:00:00 PM'
Insert Into #SALES Select '10233', '6/2/2018 8:00:00 AM';
SELECT S.PartNumber, S.DateSold
FROM #SALES S
WHERE DATESOLD BETWEEN @DATEFROM AND @DATETO
ORDER BY DateSold;
DROP TABLE #SALES
【问题讨论】:
标签: sql-server sql-date-functions