如果您使用的是SQL Server,则可以使用主表执行计算,而无需创建日历表。 This fellow给你一个很好的解释,我建议你阅读。他对计算每个月的第一个和最后一个周日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)
来源
2011-03-18 14:25:27
DOK
那么,你想要在这个月的最后一个星期一的星期数? – DOK 2011-03-18 13:11:16
什么**数据库***?哪个**版本**?这些东西通常不是标准化SQL语言规范的一部分,但通常是特定于供应商的 – 2011-03-18 13:22:41
@DOK ...我希望该月的最后一个Thursdy的周数...... – 2011-03-18 13:46:56