使用游标循环添加某一年日期(星期几)数据到数据表

直接上代码

DECLARE @BeginTime datetime
DECLARE My_Cursor CURSOR --定义游标
FOR (select dateadd(day,x,col) from 
(
select cast('2020-3-16 08:00:00' as datetime) as col --从2020年3月16日开始计算
)a cross join 
(
SELECT top 365 b8.i+b7.i + b6.i + b5.i + b4.i +b3.i +b2.i + b1.i + b0.i x
FROM(SELECT 0 i UNION ALL SELECT 1) b0
CROSS JOIN(SELECT 0 i UNION ALL SELECT 2) b1
CROSS JOIN(SELECT 0 i UNION ALL SELECT 4) b2
CROSS JOIN(SELECT 0 i UNION ALL SELECT 8) b3
CROSS JOIN(SELECT 0 i UNION ALL SELECT 16) b4
CROSS JOIN(SELECT 0 i UNION ALL SELECT 32) b5
CROSS JOIN(SELECT 0 i UNION ALL SELECT 64) b6
CROSS JOIN(SELECT 0 i UNION ALL SELECT 128) b7
CROSS JOIN(SELECT 0 i UNION ALL SELECT 256) b8
order by 1
)b
where datepart(dw,dateadd(day,x,col))=5 --5为星期四,2是星期一
--本代码摘抄自https://blog.csdn.net/weixin_42413952/article/details/88394699
)
OPEN My_Cursor; --打开游标
FETCH NEXT FROM My_Cursor INTO @BeginTime --读取第一行数据
WHILE @@FETCH_STATUS = 0
BEGIN
--PRINT @BeginTime; --打印数据(打印BeginTime)
set @EndTime = dateadd(hour,9,@BeginTime) --设置结束时间
insert into [dbo].[mettings]
SELECT NEWID(),'专用',@BeginTime,@EndTime,NULL,NULL,'d15e0d0d-7fb1-423c-9dd6-6df5ba659eb9',2,NULL,GETDATE(),NULL,'行政楼335会议室',NULL --插入数据
FETCH NEXT FROM My_Cursor INTO @BeginTime; --读取下一行数据
END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标
GO

原文地址:https://www.cnblogs.com/yangxw2E/p/12467199.html