0

我需要为给定的序列号生成日期值(从 getdate 开始并增加 1)

   SlNr  Date
    1     3/7/2013
    2     ?
    3     ?
    4     ?
    5     ?
    6     ?
    7     ?
    8     3/14/2013
    .     ?
    .     ?

如何编写sql查询。请帮忙

4

4 回答 4

1

尝试这个 :

with cte as
(select 1 Sno, convert(date,GETDATE(),103) mydate
union all

select Sno+1,DATEADD(dd,1,mydate) from cte where Sno<=10)

select * from cte

更改WHERE子句以获取更多日期。您可以使用Insert intobeforeselect在某个表中插入数据。

于 2013-03-07T11:15:51.127 回答
0

看看这里DATEADD()的功能。

SELECT SlNr, DATEADD(DAY, SlNr, GETDATE()) FROM yourTable
于 2013-03-07T11:11:12.597 回答
0

您可以使用ROW_NUMBERDATEADD

WITH cte 
     AS (SELECT slnr, 
                date, 
                RN = Row_number() 
                       OVER( 
                         ORDER BY slnr) 
         FROM   dates) 
UPDATE cte 
SET    date = Dateadd(dd, cte.RN - 1, GETDATE()) 
WHERE  date IS NULL; 

演示

于 2013-03-07T11:18:36.323 回答
0

要获得显示的结果:

declare @firstdate date = '20130307' --Your first date in yyyymmdd format

select slnr, dateadd(day, (slnr-1), @firstdate) [date]
from yourTable
order by slnr

如果您使用getdate(),每天的结果都会有所不同。如果那你需要的只是replace @firstdate with getdate()功能。

于 2013-03-07T11:16:15.290 回答