使用此日期范围02/03/2014 - 03/20/2016如何使用sql生成此类结果
02/03/2014 - 2014年12月31日
01/01/2015 - 2015年12月31日
01/01/2016 - 03/20/2016
答案 0 :(得分:1)
我们可以通过构建递归CTE来实现这一目标。
<强>查询强>
declare @startdate as date = '01/01/2014';
declare @enddate as date = '03/20/2016';
with dates as(
select dt = dateadd(yy, datediff(yy, 0, @startdate) + 1, -1)
where dateadd(yy, 1, @startDate) <= @endDate
union all
select dateadd(yy, 1, dt)
from dates
where dateadd(yy, 1, dt) <= @endDate
)
select cast(dt as date) as dt
from dates
union
select @enddate;
Find a working demo here
答案 1 :(得分:0)
$ g++ --version
g++-5 (Ubuntu 5.3.0-3ubuntu1~14.04) 5.3.0 20151204
Copyright (C) 2015 Free Software Foundation, Inc.
$ clang++-3.7 --version
Debian clang version 3.7.1-svn254351-1~exp1 (branches/release_37) (based on LLVM 3.7.1)
Target: x86_64-pc-linux-gnu
Thread model: posix
$ uname -a
Linux ****** 3.13.0-86-generic #130-Ubuntu SMP Mon Apr 18 18:27:15 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
---以上查询可能会为您提供所需的结果。