SQL Server:理解DATEADD和DATEDIFF组合所需的解释



我对SQL很陌生,在Select中使用以下行可以获得十月的第一个和最后一个星期一(@selYear定义年份)。

这里有人能告诉我如何调整它,使其在10月的第二个、第三个和第四个星期一返回吗?+请给我一个解释,以便我可以在其他日期进一步修改它

我是否只需要将第一个公式中的最后一个0更改为7、14或21,就可以添加额外的周数?如果我想要星期五或星期四而不是星期一,我会用4或3代替6吗?

--1st Monday in October
DATEADD(d, DATEDIFF(d, 0, DATEADD(m, 10-1, DATEADD(yy, DATEDIFF(yy, 0, @selYear), 6)))/7*7, 0),
--last Monday in October
DATEADD(d, DATEDIFF(d, 0, DATEADD(m, 10, DATEADD(yy, DATEDIFF(yy, 0, @selYear), 6)))/7*7, -7),

编辑:@selYear在我的情况下被定义为@selYear nvarchar(4),而我插入的表列格式为datetime-也许这是错误的,因为结果应该始终是有效的日期?

非常感谢,迈克。

declare @date as date = '20141001' -- this is for october 2014
declare @n as int = 0
while (@n<7)
begin
if ((select DATENAME(dw,@date)) = 'Monday') -- write which day you want as pivot 
    break
else
begin
set @n = @n+1
set @date = DATEADD(D,1,@date)
end
end
select @date  first
, DATEADD(D,7,@date)  second    
, DATEADD(D,14,@date) third
, DATEADD(D,21,@date) fourth

相关内容

  • 没有找到相关文章

最新更新