我正在尝试创建一种灵活的方法来确定上一周的最后一天,因为我知道这将在具有不同规划周的不同环境中运行(一些客户使用星期六,周日;周一太阳)。我计划创建一个变量用作每个客户的一周开始日(见下文)
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值)与另一个计划周为Mon-Sun的客户,并设置@EndDate =上一个星期日(8/31)。
答案 0 :(得分:0)
这将让你在上周六。
SELECT DATEADD(day,
-1 - (DATEPART(dw, GETDATE()) + @@DATEFIRST - 2) % 6,
GETDATE()
)
您应该能够根据实际所需日期将%6
位替换为参数。