顯示每月的日期屬於該月的第幾周

2021-05-22 12:47:50 字數 2082 閱讀 1088

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...