创建工作模式SQL表

创建工作模式SQL表,sql,sql-server,date,Sql,Sql Server,Date,我希望在SQL中创建一个看起来相当简单的表,但是,我正在努力创建它 工作模式开始的第一个日期是1990年1月1日(英国日期格式:dd/mm/yyyy-如果需要,很高兴将其作为1990年1月1日)。第一期的结束日期为自开始日期(1990年2月26日)起8周。下一个期间的开始日期是前一个结束日期(1990年2月27日)之后的第二天,依此类推。我希望最后一个结束日期是将来的某个时间(至少10年后) 理想情况下,这就是我希望表格的外观: +--------+------------+----------

我希望在SQL中创建一个看起来相当简单的表,但是,我正在努力创建它

工作模式开始的第一个日期是1990年1月1日(英国日期格式:dd/mm/yyyy-如果需要,很高兴将其作为1990年1月1日)。第一期的结束日期为自开始日期(1990年2月26日)起8周。下一个期间的开始日期是前一个结束日期(1990年2月27日)之后的第二天,依此类推。我希望最后一个结束日期是将来的某个时间(至少10年后)

理想情况下,这就是我希望表格的外观:

+--------+------------+------------+
| Period | Start Date |  End Date  |
+--------+------------+------------+
|      1 | 01/01/1990 | 26/02/1990 |
|      2 | 27/02/1990 | 24/04/1990 |
|      3 | 25/04/1990 | 20/06/1990 |
|      4 | 21/06/1990 | 16/08/1990 |
|      5 | 17/08/1990 | 12/10/1990 |
+--------+------------+------------+

非常感谢您的帮助。

如果您只是增加了8周,而不考虑周末,您可以遵循以下内容

CREATE TABLE your_table
(
    Period INT,
    StartDate DATE,
    EndDate DATE
)

INSERT INTO your_table
VALUES
(1,'1990-01-01','1990-02-26')
--etc
DECLARE @tempTable TABLE(
    Period INT IDENTITY PRIMARY KEY,
    StartDate DateTime,
    EndDate DateTime
);
DECLARE @startDate DATETIME = GETDATE();
DECLARE @endDate DATETIME;
DECLARE @currYear INT = DATEPART(YY,@startDate);
DECLARE @endYear INT = @currYear + 10;

WHILE (@currYear <= @endYear)
BEGIN
    SET @endDate = DATEADD(WEEK,8,@startDate);
    INSERT INTO @tempTable (StartDate, EndDate) VALUES(@startDate, @endDate);
    SET @startDate = DATEADD(dd,1,@endDate);
    SET @currYear = DATEPART(YY,@startDate);
END;
SELECT Period, FORMAT(StartDate,'dd/MM/yyyy') AS StartDate, FORMAT(EndDate,'dd/MM/yyyy') AS EndDate FROM @tempTable
DECLARE@tentable(
句点INT标识主键,
开始日期时间,
结束日期日期时间
);
声明@startDate DATETIME=GETDATE();
声明@endDate-DATETIME;
声明@currYear INT=DATEPART(YY,@startDate);
声明@endYear INT=@currYear+10;

虽然(@currYear您当前的代码是什么?日期格式是什么意思。数据库没有日期格式,日期存储时没有格式。由您的演示层选择显示格式。您真的这样定义了您的周期吗?因此,第一个周期从周一开始,到周一结束。第二个周期从周二开始,到周五结束星期二结束,等等?你的问题是什么?创建表或填充表时有问题吗?