答案 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)
使用DATEPART
,DATEADD
& DATEDIFF
这些功能可以实现。
SELECT date,
DATEPART(wk, date) AS WeekofYear,
DATEDIFF(week, DATEADD(month, DATEDIFF(month, 0, date), 0), date) +1 AS WeekofMonth,
FROM Datecte