日期声明发布

时间:2018-11-15 20:25:12

标签: sql sql-server

我根本不是SQL专家...我们试图通过以下方法来提取上周的数据。我非常确定4是错误的,因为我们需要从星期日到星期六的数据。创建的语句是:

SELECT * FROM Table
Where [Date] Between DATEADD(wk,DATEDIFF(wk,7,GETDATE()),0) AND
                     DATEADD(wk,DATEDIFF(wk,7,GETDATE()),4)

2 个答案:

答案 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())获取星期六。