2

PostgreSQLで、日付のブロックを一度に検索する方法はありますか?使うことができます

SELECT extract(dow from timestamp '2012-08-27')

一度に1日取得しますが、1か月程度のデータを一度にフィードしたいと思います。yyyy-MM-dd形式の主キーとして、日付という1つの列を持つ「カレンダー」テーブルをデータベースに作成しました。

この抽出物を9月の毎日に対して実行したい場合、それを実行する簡単な方法はありますか?関数を記述して、開始日と終了日をその関数に入力できますか?

4

1 に答える 1

3

私があなたの説明から推測できる限り、これは:

 SELECT the_date_column_name, extract(dow from the_date_column_name)
 FROM calendar
 WHERE date_trunc('month', the_date_column_name) = DATE '2012-09';

...またはbtree-indexableバージョン:

 SELECT the_date_column_name, extract(dow from the_date_column_name)
 FROM calendar
 WHERE the_date_column_name BETWEEN DATE '2012-09-01' AND (DATE '2012-09-01' + INTERVAL '1' MONTH) - INTERVAL '1' DAY;

仕事をする必要があります。

>= DATE '2012-09-01'必要に応じて、< DATE '2012-10-01'の代わりにを使用できますBETWEEN。終了日の煩雑な構成を回避し、同じように機能します。

関数でラップするには、どのように呼び出し、どのように結果を最初に返すかを決める必要があります。開始日と終了日の範囲を渡しますか?関心のある月の1日を表す日付?何?そして、どのように結果を返したいですか?

ところで、あなたのコラムが"date"あなたの説明が示唆するように実際に名前が付けられているなら、その名前を変えてください。DATESQLキーワードとタイプ名です。状況によってはユーザー識別子として使用できますが、それは悪い考えです。より良い名前を選択してください。

于 2012-08-28T04:59:51.113 に答える