我有一些每周代码,在运行时我不希望它包含当前周的数据。日期有点奇怪,因为它是一个财务日历。
| 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周
答案 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)