如何获取日期的星期数,将星期日作为一周的第一天,并从新年中至少有四天的星期开始,短日期等于
DatePart("WW", datefield, vbSunday, vbFirstFourDays)?
例如,我希望2015年1月1日返回53而不是1,因为2015年的第一周有4天,但从星期四而不是星期日开始。
答案 0 :(得分:0)
我不知道这是否满足您的所有要求,但是there is ISO_WEEK
。试试这个:
SELECT DATEPART(ISO_WEEK,'20160103')
以哪一天为first day of the week is dependant on DATEFIRST
。 (请参阅有关ISO_WEEK
和DATEFIRST
的评论。如果是ISO_WEEK
,无论如何这都是星期一...)
测试边缘情况...
如果标准(即用型)机制无法满足您的需求,则应该think about a calendar/number-table。您可以通过任何自定义列来扩大此范围。与在表中手动设置一些边值相比,任何通过某种魔术逻辑计算方法都需要更多的工作,并且花费更多的时间。此外,这样的表格会更快,并且会在很多相关情况下为您提供帮助。