集合を返す関数generate_seriesを利用して、日付をYYYY/MM/DD形式の文字列で列挙します。
範囲を指定して日付を列挙
generate_seriesの第1引数、第2引数に日付の範囲の開始日と終了日を指定します。
select to_char(generate_series, 'YYYY/MM/DD') as ymd
from generate_series('2021-01-03'::date, '2021-01-10', '1 day')
実行結果はこのようになります。
指定日の月の日付を列挙
generate_seriesの第1引数、第2引数に日付の範囲の開始日と終了日に同日を指定します。引数はいずれもtimestamp型にcastして、終了日の算出に+1monthsを指定して-1daysとすることで月末を取得しています。
select to_char(generate_series, 'YYYY/MM/DD') as ymd
from generate_series( cast('2021-01-01' as timestamp)
, date_trunc('month', cast('2021-01-01' as timestamp) + '1 months') + '-1 days', '1 days')
指定日の年の日付を列挙
指定月の取得から変更されている部分は+1 monthsの指定が+1yearsとなっている点になります。
select to_char(generate_series, 'YYYY/MM/DD') as ymd
from generate_series( cast('2021-01-01' as timestamp)
, date_trunc('month', cast('2021-01-01' as timestamp) + '1 years') + '-1 days', '1 days')