我有一个简单的查询,它返回一个元素列表并创建它们的日期。
我如何做BEETWEEN或其他仅在过去7天内没有考虑周日的事情?
答案 0 :(得分:2)
如果我正确理解了这个问题,这是一个更简单的选项。
WHERE a.datecol BETWEEN DATEADD(DAY, -7, GETDATE()) AND GETDATE()
AND DATEName(WEEKDAY, a.datecol) <> 'Sunday'
如果datecolumn有一个时间组件,那么查询可能需要稍微调整以从where子句中删除时间组件
答案 1 :(得分:0)
过去七天没有考虑周日&#34;将是本周任何一天的最后八天,周一除外。所以,这应该有效:
where datecol >= cast(getdate() - 8 as date) or
(datename(dw, getdate()) = 'Monday' and
datecol >= cast(getdate() - 9 as date))
答案 2 :(得分:0)
由于您没有发布您的查询,因此我无法看到您的期望。
但是这里有一个样本,其中我将最后7 + 2天存储在一个表中,其中7 工作日的天数和工作日结束的2天。
declare @date int=7
declare @curDate date=getdate()
create table #temp(dat date,day1 varchar(max))
while @date>0
begin
insert into #temp values(@curDate,DATENAME(DW,@curDate))
set @curDate=DATEADD(Day,-1,@curDate)
if(DATENAME(DW,@curDate)<>'Saturday' and DATENAME(DW,@curDate)<>'Sunday')
begin
set @date=@date-1
end
End
select * from #temp
答案 3 :(得分:0)
select * from dbo.x8
where DATENAME(weekday,date1)<>'Sunday'
and [date1] between DATEDIFF(DD,GETDATE(),-7) and GETDATE()