SQL - 灵活地确定前一周的最后一天
Posted
技术标签:
【中文标题】SQL - 灵活地确定前一周的最后一天【英文标题】:SQL - Determine last day of previous week with flexibility 【发布时间】:2014-10-28 09:59:23 【问题描述】:我正在尝试创建一种灵活的方式来确定前一周的最后一天,因为我知道这将在具有不同计划周的不同环境中运行(一些客户使用周六至周五;周日至周六;周一至太阳)。我正计划创建一个变量以用作每个客户一周的开始日(见下文)
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)。
【问题讨论】:
你用的是什么关系型数据库? Microsoft SQL Server 【参考方案1】:这将为您提供上一个星期六。
SELECT DATEADD(day,
-1 - (DATEPART(dw, GETDATE()) + @@DATEFIRST - 2) % 6,
GETDATE()
)
您应该能够根据实际所需的日期将%6
位替换为参数。
【讨论】:
以上是关于SQL - 灵活地确定前一周的最后一天的主要内容,如果未能解决你的问题,请参考以下文章