创建工作模式SQL表
我希望在SQL中创建一个看起来相当简单的表,但是,我正在努力创建它 工作模式开始的第一个日期是1990年1月1日(英国日期格式:dd/mm/yyyy-如果需要,很高兴将其作为1990年1月1日)。第一期的结束日期为自开始日期(1990年2月26日)起8周。下一个期间的开始日期是前一个结束日期(1990年2月27日)之后的第二天,依此类推。我希望最后一个结束日期是将来的某个时间(至少10年后) 理想情况下,这就是我希望表格的外观:创建工作模式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年后) 理想情况下,这就是我希望表格的外观: +--------+------------+----------
+--------+------------+------------+
| 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您当前的代码是什么?日期格式是什么意思。数据库没有日期格式,日期存储时没有格式。由您的演示层选择显示格式。您真的这样定义了您的周期吗?因此,第一个周期从周一开始,到周一结束。第二个周期从周二开始,到周五结束星期二结束,等等?你的问题是什么?创建表或填充表时有问题吗?