【发布时间】:2016-12-27 09:53:51
【问题描述】:
我需要自定义输出两个日期之间的日期。让我解释一下我到底需要什么。
假设我有两个日期 '2016-01-01' 和 '2016-12-31' yyyy-mm-dd 现在我想显示这两个日期之间的月份/日期列表,但顺序为 3 个月、6、9、12、18、24 等
例如
例如如果我输入开始和结束日期为'2016-01-01' 和'2016-12-31',那么输出应该显示到 12 个月,因为开始和结束之间的差是 12。
所以输出应该是
3 Months 1/1/2016 4/1/2016
6 Months 1/1/2016 7/1/2016
9 Months 1/1/2016 10/1/2016
12 Months 1/1/2016 1/1/2017
如果开始和结束日期是 '2016-01-01' 和 '2016-02-15',则输出应显示 3 个月,因为结束日期在 3 以内
所以输出应该是
3 Months 1/1/2016 4/1/2016
sql如下
声明@startdate date = '2016-01-01',@endDate DATE = '2016-12-31'
declare @mindate date, @maxdate date
SET @mindate = @startdate;
SET @maxdate = @endDate
INSERT INTO @ReportMonths(ReportMonth,MinMOnth,MaxMonth) values
( '3 Months',@mindate,dateadd(month,3,@mindate)),
( '6 Months',@mindate,dateadd(month,6,@mindate)),
( '9 Months',@mindate,dateadd(month,9,@mindate)),
( '12 Months',@mindate,dateadd(month,12,@mindate)),
( '18 Months',@mindate,dateadd(month,18,@mindate)),
( '24 Months',@mindate,dateadd(month,24,@mindate)),
( '36 Months',@mindate,dateadd(month,36,@mindate)),
( '48 Months',@mindate,dateadd(month,48,@mindate)),
( '60 Months',@mindate,dateadd(month,60,@mindate)),
( '72 Months',@mindate,dateadd(month,72,@mindate))
问题是当 Maxdate 列中没有结束日期时如何删除其余行
【问题讨论】:
-
12 后跳过 6,24 后跳过 12。为什么?
-
因为这是我需要的
标签: sql sql-server