如何在给定条件下获得周数

时间:2018-10-15 12:51:25

标签: sql sql-server tsql sql-server-2012 datepart

如何获取日期的星期数,将星期日作为一周的第一天,并从新年中至少有四天的星期开始,短日期等于

 DatePart("WW", datefield, vbSunday, vbFirstFourDays)?

例如,我希望2015年1月1日返回53而不是1,因为2015年的第一周有4天,但从星期四而不是星期日开始。

1 个答案:

答案 0 :(得分:0)

我不知道这是否满足您的所有要求,但是there is ISO_WEEK。试试这个:

SELECT DATEPART(ISO_WEEK,'20160103') 

以哪一天为first day of the week is dependant on DATEFIRST。 (请参阅有关ISO_WEEKDATEFIRST的评论。如果是ISO_WEEK,无论如何这都是星期一...)

测试边缘情况...

如果标准(即用型)机制无法满足您的需求,则应该think about a calendar/number-table。您可以通过任何自定义列来扩大此范围。与在表中手动设置一些边值相比,任何通过某种魔术逻辑计算方法都需要更多的工作,并且花费更多的时间。此外,这样的表格会更快,并且会在很多相关情况下为您提供帮助。