【发布时间】:2018-11-15 07:53:06
【问题描述】:
我有需要将给定日期范围分成每月间隔的情况。
例如输入如下:
StartDate EndDate
2018-01-21 2018-01-29
2018-01-30 2018-02-23
2018-02-24 2018-03-31
2018-04-01 2018-08-16
2018-08-17 2018-12-31
预期的输出应该如下所示:
StartDate EndDate
2018-01-21 2018-01-29
2018-01-30 2018-01-31
2018-02-01 2018-02-23
2018-02-24 2018-02-28
2018-03-01 2018-03-31
2018-04-01 2018-04-30
2018-05-01 2018-05-31
2018-06-01 2018-06-30
2018-07-01 2018-07-31
2018-08-01 2018-08-16
2018-08-17 2018-08-31
2018-09-01 2018-09-30
2018-10-01 2018-10-31
2018-11-01 2018-11-30
2018-12-01 2018-12-31
以下是示例数据。
CREATE TABLE #Dates
(
StartDate DATE,
EndDate DATE
);
INSERT INTO #Dates
(
StartDate,
EndDate
)
VALUES
('2018-01-21', '2018-01-29'),
('2018-01-30', '2018-02-23'),
('2018-02-24', '2018-03-31'),
('2018-04-01', '2018-08-16'),
('2018-08-17', '2018-12-31');
【问题讨论】:
-
很高兴您正确地发布了示例数据,但您也应该发布您迄今为止尝试过的内容。更多详情请阅读How to Ask。
-
另外,如果您在
StartDate中有一个值,即月末(如2018-01-31),该怎么办? -
如果 StartDate 是 2018-01-31,那么输出应该是 StartDate - 2018-01-31 EndDate - 2018-01-31
-
这可以通过日历表轻松解决。这是 Aaron Bertrand 在how to create one. 上的一篇(又一篇)精彩文章
标签: sql sql-server tsql datetime sql-server-2008-r2