从第一年的第一个日期开始的第一周

时间:2016-03-29 13:24:05

标签: sql sql-server tsql date

我有一个要求,即每年1月1日从一个月的第1周开始,从每月1日开始,如图所示

enter image description here

我在下面编写了一个月的SQL代码,但没有能够完成一周的

每月的SQL语句

CustomerView

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

也许这个月的一周更简单的方法是:

select (day(date_value) + 6) / 7 as weekOfMonth

+ 6是因为day()返回1到7之间的值,并且周数从1开始编号。请注意,SQL Server执行整数除法,因此结果为整数。

你可以做一年类似的事情:

select (datediff(day, cast(datename(year, date_value) + '-01-01' as date), date_value) + 7) / 7 as weekOfYear

日期差异获取一年中的日期编号。 + 7只是计数从1而不是0开始。

最后,如果这些值对您很重要,那么您可以将计算列添加到相关表中:

alter table t add WeekOfMonday as ((day(date_value) + 6) / 7)

答案 1 :(得分:0)

使用DATEPARTDATEADD& DATEDIFF这些功能可以实现。

SELECT date, 
DATEPART(wk, date) AS WeekofYear,
DATEDIFF(week, DATEADD(month, DATEDIFF(month, 0, date), 0), date) +1 AS WeekofMonth,
FROM Datecte