1

反向问题是 - 如何确定日期是否在一个月的最后一周?

例如,使用 GetDate() 我怎么知道今天的日期或给定的日期是在本月的最后一周。因为 MSSQL 中的周数可以是 4 或 5。

假设我想获取每个月最后一个星期六的日期。 但是在 2013 年 12 月的 SQL 第 5 周(即 2013 年 12 月的最后一周)中没有星期五。12 月的最后一周于 31 日星期二结束。所以,我需要跳过 12 月并在 2014 年 1 月更进一步,但上周也将在 31 日星期五结束。所以,继续前进……

那么,如何从给定日期或今天的日期获取上周 X 天的日期?

谢谢。

4

1 回答 1

1

您可以使用下面的代码。它基于从星期一开始到星期日结束的星期:

declare @date as date = '20131230' -- this is the date you check

declare @lastdayofmonth as date = DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@date)+1,0))
declare @lastweekstart as date = dateadd(d, -datepart(dw, @lastdayofmonth)+2, @lastdayofmonth)
if datepart(m, @lastdayofmonth) <> datepart(m, @lastweekstart)
    set @lastweekstart = dateadd(d, -7, @lastweekstart)

if @date >= @lastweekstart and @date <= @lastdayofmonth
    print 'Within last week'
else
    print 'Not within last week'
于 2013-12-03T11:39:02.677 回答