パラメータ間の日付を一時テーブルに移入する
2 つの日付パラメータの間の日付 (初日を含む) を一時テーブルに移入するには
ステップ 1: 再帰的共通を作成するテーブル式 (CTE)
;WITH cte AS ( SELECT CASE WHEN DATEPART(Day,@StartDate) = 1 THEN @StartDate ELSE DATEADD(Month,DATEDIFF(Month,0,@StartDate)+1,0) END AS myDate UNION ALL SELECT DATEADD(Month,1,myDate) FROM cte WHERE DATEADD(Month,1,myDate) <= @EndDate )
ステップ 2: CTE から日付を選択
SELECT myDate FROM cte OPTION (MAXRECURSION 0)
例:
@StartDate = '2011-01-01' および@EndDate = '2011-08-01'、次の日付が一時テーブルに返されます:
2011-01-01 2011-02-01 2011-03-01 2011-04-01 2011-05-01 2011-06-01 2011-07-01 2011-08-01
注:
このアプローチは、次のようなケースを処理します。 @StartDate は、再帰を翌月の 1 日から開始するため、月の 1 日ではありません。関係なく @StartDate で開始したい場合は、CTE 定義の内部 SELECT ステートメントから 1 を削除します。
以上が2 つのパラメータ間の日付を一時テーブルに設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。