2012-01-20 18 views
0

私は、開始日から一連の月間の日付を生成しようとしています。これは、ユーザテーブルの中で最も古いユーザの日付です。定義済みの日付(PG)からシリーズを生成する

私はいくつかの日付を非常に簡単に選択できますが、

SELECT generate_series(
now(), 
now() + '5 months'::interval, 
'1 month'::interval); 

と私はで起動する必要がある日付を選択することができます。私は今まで、毎月アップ選択てるよう

SELECT to_date(to_char(CAST(min(created_at) AS DATE),'yyyy-MM') || '-01','yyyy-mm-dd') from users 

は、どのように私は2つを組み合わせることができますか?

答えて

1

が判明し、それがさらに簡単にすることができます。 :)

SELECT generate_series(
      date_trunc('year', min(created_at)) 
     , now() 
     , interval '1 month') AS month; 
FROM users; 

date_trunc in the manual詳細

それとも、あなたは実際に代わりtimestamp with time zoneのデータ型dateをしたい場合:

SELECT generate_series(
      date_trunc('year', min(created_at)) 
     , now() 
     , interval '1 month')::date AS month; 
FROM users; 
1

は、それはかなり簡単ですが判明:

SELECT generate_series(
(SELECT to_date(to_char(CAST(min(created_at) AS DATE),'yyyy-MM') || '-01','yyyy-mm-dd') from users), 
now(), 
'1 month'::interval) as month; 
関連する問題