見事に機能する関数を使用して、2つの日付間の日付のリストを取得するの関数を使用しました。
ただし、渡された終了日に追加のチェックを入力する必要があります。レコードがまだ最新の場合は入力されていないため、この日付が null になることがあります。そうであれば、日付が開始日から現在の日付に返されるように、現在の日付に置き換えたいと思います。
入力したいコードはこれなのですが、どこに書いても構文エラーです。
IF @endddate IS NULL
SET @enddate = getdate()
現状のコードは次のとおりです
CREATE FUNCTION [dbo].[ExplodeDates](@startdate datetime, @enddate datetime)
returns table as
return (
with
N0 as (SELECT 1 as n UNION ALL SELECT 1)
,N1 as (SELECT 1 as n FROM N0 t1, N0 t2)
,N2 as (SELECT 1 as n FROM N1 t1, N1 t2)
,N3 as (SELECT 1 as n FROM N2 t1, N2 t2)
,N4 as (SELECT 1 as n FROM N3 t1, N3 t2)
,N5 as (SELECT 1 as n FROM N4 t1, N4 t2)
,N6 as (SELECT 1 as n FROM N5 t1, N5 t2)
,nums as (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 1)) as num FROM N6)
SELECT DATEADD(day,num-1,@startdate) as thedate
FROM nums
WHERE num <= DATEDIFF(day,@startdate,@enddate) + 1
);
どんな助けでも大歓迎です。