反向问题是 - 如何确定日期是否在月的最后一周?
例如,使用GetDate(),我怎么知道今天的日期或给定日期是在该月的最后一周。 因为MSSQL中的周数可以是4或5。
假设我想要获取每个月的上周六的日期。 但是在2013年12月的SQL第5周(2013年12月的最后一周)没有星期五。 12月的最后一周以星期二的31日结束。 因此,我需要跳过12月并进一步延长到2014年1月,但上周也将于周五31日结束。 所以,继续前进....
那么,如何从指定日期或今天的日期获取上周X日的日期?
感谢。
答案 0 :(得分: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'