2 つの日付の間の異なる年のリストを取得したいと思います。
たとえば、 from 25/12/2006
to14/11/2013
の場合、結果は次のようになります。
2006
2007
2008
2009
2010
2011
2012
2013
これは SQL Server で可能ですか?
2 つの日付の間の異なる年のリストを取得したいと思います。
たとえば、 from 25/12/2006
to14/11/2013
の場合、結果は次のようになります。
2006
2007
2008
2009
2010
2011
2012
2013
これは SQL Server で可能ですか?
SQL Server 2008 でテスト済み
declare @smaller_date date = convert(date, '25/12/2006', 103)
declare @larger_date date = convert(date, '14/11/2013', 103)
declare @diff int
select @diff = DATEDIFF(YY, @smaller_date, @larger_date)
;with sequencer(runner) as(
select 0
union all
select sequencer.runner + 1 from sequencer
where runner < @diff
)
select YEAR(@smaller_date) + runner from sequencer
CREATE FUNCTION [dbo].Fn_Interval
(
@p1 datetime2,
@p2 datetime2
)
RETURNS @dt TABLE
(
YearValue int not null
)
AS
BEGIN
declare @start as int
declare @end as int
set @start = DATEPART(year, @p1);
set @end = DATEPART(year, @p2);
while (@start <= @end)
begin
INSERT @dt
SELECT @start;
set @start = @start + 1;
end
RETURN;
END
クエリを開き、次を試してください。
declare @p1 as datetime2;
declare @p2 as datetime2;
set @p1 = '2013-12-31';
set @p2 = '2020-05-05';
select *
from dbo.Fn_Interval(@p1, @p2)