SQL - 不包括当前一周的数据

时间:2018-02-23 11:40:41

标签: sql sql-server date

我有一些每周代码,在运行时我不希望它包含当前周的数据。日期有点奇怪,因为它是一个财务日历。

|  Date     | Week  | Year|
---------------------------
|30-12-2017 |  52   | 2017|
|31-12-2017 |   1   | 2018|
|01-01-2018 |   1   | 2018|

我看过

where week = datepart(ww, date) -1 
and year = datepart(yyyy, date) 

但是,当年度结束时,这一年没有工作,第1周减去1不等于第52周

3 个答案:

答案 0 :(得分:0)

您可以使用:

where week = datepart(ww, dateadd(week, -1, getdate()) and
      year = datepart(yyyy, dateadd(week, -1, getdate()) 

我不确定代码中的date是什么。 getdate()代表当前日期。当然,任何其他日期都可以替代前一周。

答案 1 :(得分:0)

我想你想要这样的条款:

where (year < datepart(yyyy, getdate())) or
      (week < datepart(ww, getdate()) and
       year = datepart(yyyy, getdate()))

逻辑是:记录year小于当前年份的所有记录(过去几年的数据),也记录当前年份的记录,但周数小于当前周。

答案 2 :(得分:0)

比较日期。 dateadd(ww, datediff(ww,0,getdate()), 0)将获得一周的第一天。所以你的查询应该是

where
    dateColumn < dateadd(ww, datediff(ww,0,getdate()), 0)