アプリ版:「スタンプのみでお礼する」機能のリリースについて

postgresで、ある日付から前日までのカレンダーをテーブル作成することなく、用意したいのですが、良い方法がわかりません。

どのようにすればよいのでしょうか?

■イメージ
2014/9/1から前日まで
(2014/10/20に実行した場合)


2014/9/1
2014/9/2
2014/9/3



2014/10/19


オラクルでは以下のように指定できたのですが、postgresではどのように指定すればよいのかわかりませんでした。

select
to_date ('20140901', 'YYYYMMDD') + ROWNUM - 1 date1
from
ALL_CATALOG
where
to_date ('201400901', 'YYYYMMDD') + ROWNUM - 1 <= sysdate - 1
order by
1

A 回答 (2件)

generate_series を使うのが簡単かと。



SELECT generate_series('2014-09-01', CURRENT_DATE - 1, '1 day')::DATE;

ver 8.4 以降なら使えるはずです。

参考URL:http://www.postgresql.jp/document/9.3/html/funct …

この回答への補足

早速のご回答ありがとうございます。

大変申し訳ございません、情報が不足しておりました。
確認したところ、version PostgreSQL 8.0.2でした。

このバージョンではエラーとなってしまうようです。
ERROR: 42883: function generate_series("unknown", date, "unknown") does not exist

他に方法はありますでしょうか?

補足日時:2014/10/21 10:27
    • good
    • 0

8.0系でも数値を返す generate_series は使えるようですので、連番を生成して開始日に足すようにすれば良さそうです。



SELECT '2014-09-01'::DATE + num
FROM generate_series(0, CURRENT_DATE - '2014-09-01' - 1) AS tmp(num);


蛇足ですが、8.0.2がリリースされたのは9年半も前ですし、その後、セキュリティアップデートも何度も出ていますので、もっと新しいバージョンを使われた方が良いと思いますよ。

参考URL:http://www.postgresql.jp/document/8.0/html/funct …
    • good
    • 0
この回答へのお礼

ご連絡遅くなり、申し訳ございません。

教えて頂いた方法で日付が作成出来ました!
大変助かりました。

本当にありがとうございます。

お礼日時:2014/10/29 12:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!