/*
每个函数都只有一句话! 【程序编程相关:数据分页方法新思路,速度非常快![转帖]】 【推荐阅读:JavaGames(ginger547翻】其实都是从我的另一篇 blog 里抠出来的: 【扩展信息:今天你"循环"了没?】t-sql 生成 两个新的真正的公历年历
http://blog.csdn.net/playyuer/archive/2004/04/07/2860.aspxt-sql 生成一个简易的 公历年历 t-sql 含日期所在月及年的周次
http://blog.csdn.net/playyuer/archive/2004/04/05/2859.aspx由于使用了 (@@datefirst + datepart(weekday,@date)) % 7 判断周几
因此与 datefirst 无关,且可适应各种语言版本的 sql server*/
--周日算作(上一)周的最后一天
create function udf_weekofyear(@date datetime)
--求 @date 所在周是当年的第几周 --周日算作(上一)周的最后一天 --用于按周汇总 group by 时,不要有跨年数据,或者同时 group by year --group by year(date),month(date), dbo.udf_weekofyear(date),dbo.udf_weekofmonth(date) returns int as begin return (select datediff(week ,case when (@@datefirst + datepart(weekday,dateadd(day,0,datediff(day,0,dateadd(year,datediff(year,0,@date),0))))) % 7 = 1 then dateadd(day,-1,dateadd(day,0,datediff(day,0,dateadd(year,datediff(year,0,@date),0)))) else dateadd(day,0,datediff(day,0,dateadd(year,datediff(year,0,@date),0))) --date 所在年的第一天 即: 一月一号 end ,case when (@@datefirst + datepart(weekday,@date)) % 7 = 1 ... 下一页