我在SQL Server 2008中创建一个查询,用于每周一上午03:30运行的SSRS报告,检索周末销售详情。
报告准备就绪,但我不得不对日期范围进行硬编码,因为我在WHERE语句中无法表达该条件。
我需要在周五下午12:30到周一上午330点之间检索基于[salestime]
列(类型datetime
)的数据。
非常感谢您对此的帮助。
答案 0 :(得分:1)
如下:
WHERE SalesTime BETWEEN DATEADD(HH,-63,GETDATE()) AND GETDATE()
我相信时间值相隔63小时。这是因为您的报告会在凌晨3:30自动运行,这就是您帖子中的声音。
答案 1 :(得分:0)
如果您想在本周的任何时间运行报告以报告上周末的销售情况
SET DATEFIRST 7
DECLARE @ThisMonday date = DATEADD(DAY, 2 - DATEPART(WEEKDAY, GETDATE()), GETDATE())
DECLARE @LastFriday date = DATEADD(DAY, -3, @ThisMonday)
DECLARE @StartTime datetime = CAST(@LastFriday AS datetime) + CAST('12:30' AS datetime)
DECLARE @EndTime datetime = CAST(@ThisMonday AS datetime) + CAST('03:30' AS datetime)
SELECT @ThisMonday, @LastFriday, @StartTime, @EndTime
现在,您可以使用salestime BETWEEN @StartTime AND @EndTime
过滤报告。