数据库日期:如何在表格中自动增加日期?

时间:2017-12-08 11:55:21

标签: sql sql-server

我创建了一个名为DatesOfYear的数据库

 CREATE TABLE DATESOFYEAR
 (
 MyName varchar(15),
 MyDate date
 );

我在其中插入了一个值

 INSERT INTO DATESOFYEAR VALUES ('FName','1-JAN-2017');

输出

 MYNAME     MYDATE
 FName      1-JAN-2017

如何将MyDate1-JAN-2017增加到年末31-DEC-2017,我希望看到的输出是

 MYNAME     MYDATE
 FName      1-JAN-2017
 ....          ....
 FName      31-DEC-2017

2 个答案:

答案 0 :(得分:0)

一个选项:

DECLARE @StartDate date, @EndDate Date;
SELECT @StartDate = '20170101', @EndDate = '20171231';

WITH Dates AS(
    SELECT @StartDate AS MyDate
    UNION ALL
    SELECT DATEADD(DAY, 1,MyDate)
    FROM Dates
    WHERE DATEADD(DAY, 1,MyDate) <= @EndDate)
SELECT *
FROM Dates
OPTION (MAXRECURSION 366);

如果您愿意,您可以INSERT将该数据集放入另一个表中,或按原样使用它。

答案 1 :(得分:0)

您可以创建一个循环并在数据库中添加行,直到您到达年底。在每个插入上,将前一个日期增加1天。

DECLARE @my_previous_date DATE = '1-JAN-2017', 
        @my_date DATE = DATEADD(d,1, @my_previous_date);

WHILE @my_date <= '31-DEC-2017'
    BEGIN
    INSERT INTO DATESOFYEAR VALUES ('FName', DATEADD(d,1, @my_date));
    @my_date = DATEADD(d,1, @my_date);
END;