使用Date在SQL Server中循环

时间:2016-01-07 07:36:55

标签: sql-server database sql-server-2008

我有一个问题,

我需要一个与我的项目相关的脚本,它应该是,

Table_Day包含2016年的所有日期(即20160101,20160102,......)

对于每一天,我必须插入6个personal_id。

喜欢这个

'date_id' 'personal_id'
“20160101” “1001”,“20160101” “1002”,“20160101” “1003”,“20160101” “1004”,“20160101” “1005”,“20160101” “1006”--for example

“20160102” “1001”
“20160102” “1002”
“20160102” “1003”
“20160102” “1004”
“20160102” “1005”
“20160102” “1006”

我希望将这些数据插入到2016年底(Table_day的日期参考)。

1 个答案:

答案 0 :(得分:0)

您可以使用以下查询来循环日期并完成作业:

        declare @firstofmonth as smalldatetime
        declare @endofmonth as smalldatetime

        --Set the inital month to loop
        set @firstofmonth = '01/01/2016'
        set @endofmonth = '12/31/2016'

        WHILE @firstofmonth >= '01/01/2016' --This would be the condition to end the loop

        Begin
---Check  here if dates exist in dates table and do insert


         Insert into Table_Day (blah blah black sheep)

         --Increment Date
        SET @firstofmonth = DateAdd(m,1,@firstofmonth)
        SET @endofmonth = DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@firstofmonth())+1,0))

        End

这是我搜索looping dates in sql

时出现的第一个堆栈溢出结果

以上只是一种使用循环来获取特定日期然后插入的方法。