admin

如何在SQL中按WeekNO和Year计算月份的最后一周

sql

我想在SQL中计算上周的月数。我有周号和年。

例如。如果我通过WeekNo = 51,Year = 2008,则该函数应返回LastWeekofMonth = 52。

我想使用以下标准来计算周数。

根据瑞典使用的ISO 8601:1988,今年的第一周是在新年之内至少有四天的第一周。

因此,如果您的一周从星期一开始,则每年的第一个星期四都在第一周之内。您可以从中添加DateAdd或DateDiff。

请帮我..........

提前致谢。


阅读 170

收藏
2021-06-07

共1个答案

admin

如果您使用的是 SQL Server
,则可以使用主表来执行计算,而无需创建日历表。这位同事为您提供了很好的解释,建议您阅读。他的用于计算每个月的第一个和最后一个星期日的SQL可以适合您的使用:

declare @year int
set @year =2011

select min(dates) as first_sunday,max(dates) as last_sunday from
(
select dateadd(day,number-1,DATEADD(year,@year-1900,0))
as dates from master..spt_values
where type='p' and number between 1 and
DATEDIFF(day,DATEADD(year,@year-1900,0),DATEADD(year,@year-1900+1,0))
) as t
where DATENAME(weekday,dates)='sunday'
group by DATEADD(month,datediff(month,0,dates),0)

编辑: 一旦有了星期四的日期,就可以从该日期获得星期几,如下所示:

DECLARE @Dt datetime

SELECT @Dt='02-21-2008'

SELECT DATEPART( wk, @Dt)
2021-06-07