有很多关于这个主题的帖子,但我们仍在努力获得一些适用于该时期的SQL,这些帖子只是令人困惑。
我们要做的是返回时间戳>=工作周开始的所有记录,即星期二。有人能告诉我们哪里出了问题吗。
即昨天是10月27日,所以当我们运行查询时,它将返回10月21日(前一个星期二)的所有结果。今天是28号,所以当我们现在运行查询时,它只会返回28号的结果。明天当我们进行比赛时,我们将获得第28名和第29名。。。。等
timestamp >= dateadd(day, -4-datepart(dw, getdate()), CONVERT(date,getdate()))
注意:当我们昨天运行这个查询时,它运行得很好,所以我想知道它是否每天都在更改?
Mod 7请:
select
dateadd(day, -(datepart(dw, getdate() ) + 4)%7, getdate())
,dateadd(day, -(datepart(dw, '2014-10-28' ) + 4)%7, '2014-10-28') --2014-10-28
,dateadd(day, -(datepart(dw, '2014-10-27' ) + 4)%7, '2014-10-27') --2014-10-21
,dateadd(day, -(datepart(dw, '2014-10-29' ) + 4)%7, '2014-10-29') --2014-10-28
更新
根据@hvd的评论,当我们使用这些方法时,我们假设一周的开始日默认为美国英语的周日。更多信息请参阅本文档。
SET DATEFIRST 7
可以确保这种方法是正确的。
最后了解了你的要点,你应该在这里提供一个额外的参数来指出哪一天是工作周的开始,然后很容易计算的天数