0

我正在尝试创建一种灵活的方式来确定前一周的最后一天,因为我知道这将在具有不同计划周的不同环境中运行(一些客户使用周六至周五;周日至周六;周一至周日)。我正计划创建一个变量以用作每个客户一周的开始日期(见下文)

    Set @BeginningWeek = 1   -- 1=Mon; 2=Tues; 3=Wed; 4=Thurs; 5=Fri; 6=Sat; 7=Sun

我一直在尝试使用 dateadd 和 datepart 的组合,以及上面的变量来尝试获取一周的最后一天,但我在逻辑上遇到了问题。我不想使用 Set DateFirst,这些脚本将在客户环境中运行,所以我不想更改其数据库中的任何内容。

假设脚本在星期三(9/3)运行;客户的计划周是周六周五;我想设置另一个变量@EndDate = 上一个星期五(8/29)。我需要灵活地与另一个计划周为周一至周日的客户使用相同的脚本(仅更改 @BeginningWeek 值)并设置 @EndDate = 上周日(8/31)。

4

1 回答 1

0

这将为您提供前一个星期六。

SELECT DATEADD(day,
               -1 - (DATEPART(dw, GETDATE()) + @@DATEFIRST - 2) % 6,
               GETDATE()
       ) 

您应该能够%6根据实际所需的日期用参数替换该位。

于 2014-09-03T19:28:30.997 回答