Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 周末的逻辑是53周_Sql_Sql Server_Sql Server 2008_Week Number - Fatal编程技术网

Sql 周末的逻辑是53周

Sql 周末的逻辑是53周,sql,sql-server,sql-server-2008,week-number,Sql,Sql Server,Sql Server 2008,Week Number,我正在尝试为所有周创建周末 我的逻辑是 dateadd(day, 7-datepart(Weekday, basicstart), basicstart) 对于2013年12月29日至2013年12月31日的最后一周,它将周末生成为“2014年1月4日”” 但它并没有将2014年1月1日的数据合并到同一周的2014年1月4日的数据,而是生成了另一周的同名数据(2014年1月4日) 这意味着我的数据将分别在1月4日和1月4日这两周获得 有人能帮忙吗?那一周的一部分是在2013年,另一部分是在20

我正在尝试为所有周创建周末 我的逻辑是

dateadd(day, 7-datepart(Weekday, basicstart), basicstart)
对于2013年12月29日至2013年12月31日的最后一周,它将周末生成为“
2014年1月4日”
” 但它并没有将2014年1月1日的数据合并到同一周的2014年1月4日的数据,而是生成了另一周的同名数据(
2014年1月4日

这意味着我的数据将分别在1月4日和1月4日这两周获得


有人能帮忙吗?

那一周的一部分是在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) 一周中的大部分时间可能在一年内,但您将其放在相反的一年。365天的年份总是跨越53周。366天的年份通常跨越53周,有时跨越54周。365天或366天的日历年将始终与相邻日历年至少共享一周


SQL风格的解决方案是创建并维护一个日历表,您可以在其中存储所有业务日历规则。

一年中有52周或53周,一周通常正好有7天,如何?根据维基百科的说法,这是标准(),也是这里的标准(在NL中),似乎OP正在根据这个问题寻找这一点,或者非常接近这一点。你所要做的就是找出如何使365/7和366/7在没有小数点或舍入的情况下进行计算,你可以得到它。不,这不是必要的。一年中的第一周和最后一周可能包括另一年中的几天。因此,对于任何给定的一周,它可能是两年中的一周?我不确定这是否回答了您的问题为“是”或“否”,但2013年12月30日至2014年1月5日是一周,这一周有一周编号:2014年第1周。即使它也包含了从2013年起的两天。但是,重读这个问题,我现在不再认为这是OP想要的。是的,我知道一年中总有超过52周的时间。我只想在2014年1月的第一周增加53周(12月29日、30日和31日)的额外天数,因为这不是完整的一周,我的一周将在2014年1月4日的周六结束。是的,我知道一年中总有52周以上。我只想在2014年1月的第一周添加53周(12月29日、30日和31日)的多余天数,因为这不是完整的一周,我的一周将在2014年1月4日的Sat结束。编辑您的问题以添加您的模式和查询。你的问题现在太模糊了。