我根本不是SQL专家...我们试图通过以下方法来提取上周的数据。我非常确定4是错误的,因为我们需要从星期日到星期六的数据。创建的语句是:
SELECT * FROM Table
Where [Date] Between DATEADD(wk,DATEDIFF(wk,7,GETDATE()),0) AND
DATEADD(wk,DATEDIFF(wk,7,GETDATE()),4)
答案 0 :(得分:0)
假设您正在使用Sql Server,则可以使用如下所示的cte结构,将数据设置为cte并在主查询中进行过滤:
;with cte (ID) as ( --data from previous week only
Select Id from table
Where [Date] >= DATEADD(WEEK,-1,DATEADD(week,datediff(week,0,getdate()),0))
AND [Date] < DATEADD(week,datediff(week,0,getdate()),0)
)
select *
from table t
inner join cte on t.Id = cte.ID
where DATEPART(DW, [Date]) >= 0 --sunday
and DATEPART(DW, [Date]) <= 6 --saturday
在过滤器中,编辑0和6以根据需要根据日期过滤数据。
答案 1 :(得分:0)
如果使用此选项,它将返回上一个星期六和星期日:
SELECT DATENAME(DW,(DATEADD(day, -6, getdate()))) ,DATENAME(DW,(DATEADD(day, -5,
getdate())))
[![Day Name][1]][1]
例如,您可以使用DATEADD(day,-6,getdate())获取星期六。