mogice
2/23/2017 - 2:24 AM

SQLServerで日付範囲から日ごと、または月ごとに年月日(月ごとの場合、日は1日)を作成するサンプル

SQLServerで日付範囲から日ごと、または月ごとに年月日(月ごとの場合、日は1日)を作成するサンプル

--月ごとに年月日(日は1日)を抽出
WITH MonthTable(YearMonth) AS ( 
  SELECT
    CONVERT(DATETIME, '2016/12/01') 
  UNION ALL 
  SELECT
    DATEADD(m, 1, YearMonth) 
  FROM
    MonthTable 
  WHERE
    YearMonth < CONVERT(DATETIME, '2017/03/01')
) 
SELECT
  YearMonth 
FROM
  MonthTable
--日ごとに年月日を抽出
WITH DateTable(MyDate) AS ( 
  SELECT
    CONVERT(DATETIME, '2017/01/01') 
  UNION ALL 
  SELECT
    DATEADD(d, 1, MyDate) 
  FROM
    DateTable 
  WHERE
    MyDate < CONVERT(DATETIME, '2017/01/31')
) 
SELECT
  MyDate 
FROM
  DateTable