if object_id('fn_getwk') is not null
drop function fn_getwk
gocreate function fn_getwk(
@year int,--輸入顯示的年份
@month int, --輸入顯示的月份
@type bit=0 --指定每週的第一天,預設為星期日(中國習慣),如果引數為就是星期一為每週的第一天
) returns @t table(
週數 nvarchar(10),
開始日期 varchar(10),
結束日期 varchar(10)
) as
begin
declare @d datetime
set @d=dateadd(wk,datediff(wk,'1900',cast(ltrim(@year*10000+@month*100+1) as datetime)),'1900')+@type
;with t as
select top (datediff(dd,ltrim(@year*10000+@month*100+1),ltrim(@year*10000+(@month+1)*100+1)))
[date]=cast(ltrim(@year*10000+@month*100+1) as datetime)-1
+row_number()over(order by getdate())
from sysobjects
insert @t
select
case
when [date] < @d+6 then '第一周'
when [date] < @d+13 then '第二週'
when [date] < @d+20 then '第三週'
when [date] < @d+27 then '第四周'
when [date] < @d+34 then '第五周'
else '第六周'
end as 週數,
convert(varchar,min([date]),23) 開始日期,
convert(varchar,max([date]),23) 結束日期
from t
group by
case
when [date] < @d+6 then '第一周'
when [date] < @d+13 then '第二週'
when [date] < @d+20 then '第三週'
when [date] < @d+27 then '第四周'
when [date] < @d+34 then '第五周'
else '第六周'
endorder by 2
return
endgo
select * from fn_getwk(2010,5,0)
select * from fn_getwk(2010,5,0)
週數 開始日期 結束日期
第一周 2010-05-01 2010-05-01
第二週 2010-05-02 2010-05-08
第三週 2010-05-09 2010-05-15
第四周 2010-05-16 2010-05-22
第五周 2010-05-23 2010-05-29
第六周 2010-05-30 2010-05-31
(6 行受影響)
select * from fn_getwk(2010,5,1)
週數 開始日期 結束日期
第一周 2010-05-01 2010-05-02
第二週 2010-05-03 2010-05-09
第三週 2010-05-10 2010-05-16
第四周 2010-05-17 2010-05-23
第五周 2010-05-24 2010-05-30
第六周 2010-05-31 2010-05-31
(6 行受影響)
顯示每月的日期屬於該月的第幾周
if object id fn getwk is not null drop function fn getwk gocreate function fn getwk year int,輸入顯示的年份 month int,輸入顯示的月份 type bit 0 指定每週的第一天,預設為星期日 中國習慣...
JAVA獲取日期屬於當年第幾周
string today 2017 11 11 dateformat format new dateformat yyyy mm dd date date format.parse today calendar calendar calendar.getinstance calendar.setfi...
某年某月某日屬於某月的第幾周
有人在php版問 某月某日所對應的週數應該怎麼做.比如9月8號,對應的是本月的第幾周.演算法 1 m x年y月1日前空著的天數。比如,用windows看今天是2008年9月12日,本月1日前空著1天,所以m 1。2 w x年y月z日是y月的第w周。x 2008 y 9 z 12 m date n s...