如何创建一个返回最近7天(不包括星期日)数据的查询

时间:2015-03-24 18:23:48

标签: sql asp.net sql-server

我有一个简单的查询,它返回一个元素列表并创建它们的日期。

我如何做BEETWEEN或其他仅在过去7天内没有考虑周日的事情?

4 个答案:

答案 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()