2017-04-18 70 views

回答

0

试试这个,我认为这是你需要的全部:

set datefirst 6 

declare @dt datetime 
set @dt = '2017-03-04' 

select datepart(wk, @dt) - datepart(wk,dateadd(m, DATEDIFF(M, 0, @dt), 0)) + 1 as weekOfMonth 
0

您可以使用DATEFIRSTDATEADD。将DATEFIRST设置为值6表示星期六。

试试这个(与你的datetime替换列yourDate):

SET DATEFIRST 6 
select datediff(week, dateadd(month, 0, yourDate), yourDate) + 1 
+1

感谢@Douek为您的答案,但此句法向我显示此错误消息:“数据类型datetime参数对dateadd函数的第二个参数无效。” –

+0

@Koby Douek,交换yourDate和0在dateadd() –

+0

@MustaphaAitFadel请看更新的答案 –

0

您可以使用此查询

DECLARE @currentdate date = '2017-04-01' 
select floor((datepart(day,@currentdate) - 1)/7) + 1 AS WeekOfMonth 

--- @currentdate date = '2017-04-01' -- return 1 
--- @currentdate date = '2017-04-07' -- return 1 
--- @currentdate date = '2017-04-08' -- return 2 
0

请使用以下查询:

SELECT 'Week '+ CAST(FLOOR((datepart(day,@YourDate) - 1)/7) + 1 AS VARCHAR(10)) Currentweek 
相关问题