我正在尝试为所有周创建周末 我的逻辑是
dateadd(day, 7-datepart(Weekday, basicstart), basicstart)
正在生成周结为“4-Jan-2014
”上周2013
表示29-Dec-2013
表示31-Dec-2013
但它没有在同一周内将1-Jan-2014
的数据合并到4-Jan-2014
而是生成另一个具有相同名称的周(4-Jan-2014
)
这意味着我的数据将在1月4日和1月4日的2个单独的周内完成
任何人都可以帮忙吗?
答案 0 :(得分:1)
那一周的一部分是在2013年,那一周的一部分是在2014年。
一年中的第一周和最后一周受以下特点影响。
a)一年总有53周
b)一周可以有1到7天。 7是最常见的
合并数周
您可以执行类似
的操作CASE WHEN myweek = 53 THEN 1 ELSE myweek END AS myweek
合并1和53无济于事,因为那时你的情况是
a)每年总有52周
b)一周可以有7到9天
c)大部分时间都可能在一年内,但你将其置于相反的一年
答案 1 :(得分:1)
52 * 7 = 364. 365天的年数总是超过53周。 366天的年份通常为53周,有时为54周。 365天或366天的日历年将始终与相邻的日历年共享至少一周。
此问题的SQL式解决方案是制作和维护一个日历表,您可以在其中存储所有业务日历规则。