前一天(星期一)前一天

时间:2016-05-10 01:37:32

标签: sql sql-server

我想将本周的所有数据提取到前一天。 例如:

如果日期是2016-05-09周一。我希望2016-05-02上周一到2016-05-08周日。

如果日期是2016-05-10周二。我希望2016-05-09上周一到2016-05-09周一。

我尝试过没有快乐。

and (ShiftDate Between DATEADD(wk, 0, DATEADD(DAY, (1-DATEPART(WEEKDAY, GETDATE()-1)), DATEDIFF(dd, 0, GETDATE())))and GETDATE()-1)

1 个答案:

答案 0 :(得分:1)

你应该用这个:

and (ShiftDate Between (GETDATE() - 1 - (DATEPART(weekday, GETDATE() -1) + 7 - 2) % 7)
                       and (GETDATE()-1)
    )

因为Sunday中的weekday为1,所以您应该添加 7 ,然后按 7 添加模块,以获得与最近{{1}的不同之处}(前一天Monday中的2个)。