過去10日間の日付のレコードを一覧表示する方法は?


101
SELECT Table.date FROM Table WHERE date > current_date - 10;

これはPostgreSQLで動作しますか?

回答:


190

はい、これはPostgreSQLで機能します(列 " date "がデータ型であると仮定date)。なぜそれを試してみませんか?

標準のANSI SQL形式は次のとおりです。

SELECT Table.date 
FROM Table 
WHERE date > current_date - interval '10' day;

物事を読みやすくするため、私はその形式を好みます(ただし、と同じですcurrent_date - 10)。


1
クエリは次のようになります。SELECT Table.date FROM Table WHERE date> current_date-interval '10 day ';
user2694306 2016

4
@ user2694306:interval '10 day'Postgres構文です。interval '10' daySQL標準に基づく構文であり、Postgresでもサポートされています
a_horse_with_no_name

1
間隔は9でなければなりません。10は、実際には今日から11日前の日付を示します。
David He

1
@DavidHe:これは元の回答と同じことを行います。使用するのは10、ではなく9
a_horse_with_no_name

3
注:Redshiftでは、@ user2694306の公式が機能します:間隔は「10日」です。間隔 '10'日はRedshiftでは機能しません。
ベン


9

私のテスト(およびPostgreSQL dox)からの私の理解は、引用符は他の回答とは異なる方法で実行する必要があり、次のような「日」も含める必要があるということです。

SELECT Table.date
  FROM Table 
  WHERE date > current_date - interval '10 day';

ここに示されています(これはどのPostgres dbでも実行できるはずです):

SELECT DISTINCT current_date, 
                current_date - interval '10' day, 
                current_date - interval '10 days' 
  FROM pg_language;

結果:

2013-03-01  2013-03-01 00:00:00 2013-02-19 00:00:00

実際、私はブラッドリーの答えが正しいと気づかなかった。とにかく、それが正しい方法であることの証明として、私はここに置いておきます。受け入れられた答えは間違っています(少なくとも私が実行しているPostgreのバージョンの場合)
非常に不規則な

0

データ型をチェックします。

current_dateには「日付」データ型、10は数値、Table.dateがあります-テーブルを確認する必要があります。


0

あなたもの間で使用できます:

SELECT Table.date
  FROM Table 
  WHERE date between current_date and current_date - interval '10 day';

between最初の最小値でなければならないので、これは正しくとして行われることになる SELECT Table.date FROM Table WHERE date between current_date - interval '10 day' and current_date;
タイプ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.