sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQL-日付範囲をフィルタリングする

    あなたの解決策は大丈夫です。ただし、日付がリテラルの場合は、次のようにします。

    WHERE datefield >= '2010-01-01 00:00:00' 
     AND  datefield <  '2012-01-01 00:00:00'
    

    これはまったく同じように機能しますが、各文字通りの「日付」が日付ではなくタイムスタンプであることが明確になるため、より保守しやすくなります。たとえば、誰かがクエリを次のように変更したとします

        AND  datefield <=  '2012-01-01'
    

    ...クエリに1日「2012-01-01」が含まれることを期待しています(そして失敗しています)。後者の構文では、意図がより明確になり、この混乱が防止されます。

    さらに明確にするために(おそらく冗長すぎる)、明示的なキャストを行うことができます:

    WHERE datefield >= '2010-01-01 00:00:00'::timestamp 
     AND  datefield <  '2012-01-01 00:00:00'::timestamp
    

    to_date()は使用しません ここでも同様の理由(データ型の混乱の可能性)、またはto_timestamp()timestamptzを返します 。

    ところで、推奨される方法(大文字のキーワード、小文字の識別子)に準拠するように大文字と小文字を変更しました



    1. MySQLのフィールド名に-(ダッシュ)を使用しない理由はありますか?

    2. PlayFrameworkでPostgresqlDBに接続できません

    3. Dockerを使用してWebアプリを起動すると、Postgresql DBに接続できませんか?

    4. xmlns:dtを使用したOPENXML