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

日/月/年/日&月/日&年などで検索するSQLクエリ

    pg/temporal拡張機能を使用することでさらに高速な保守可能なクエリを作成できます。

    https://github.com/jeff-davis/PostgreSQL-Temporal

    create index on events using gist(period(start_date, end_date));
    
    select *
    from events
    where period(start_date, end_date) @> :date;
    
    select *
    from events
    where period(start_date, end_date) && period(:start, :end);
    

    これを使用して、テーブル制約としてオーバーラップを禁止することもできます:

    alter table events
    add constraint overlap_excl
    exclude using gist(period(start_date, end_date) WITH &&);
    

    実際には、想像以上にメンテナンスが容易です。例:

    select *
    from events
    join generate_series(:start_date, :end_date, :interval) as datetime
    on start_date <= datetime and datetime < end_date;
    

    ただし、上記の期間タイプを使用することをお勧めします。




    1. MYSQLのDATETIME形式が正しくありません

    2. MySQLはカンマ区切りフィールドに参加します

    3. mysqlとasp.netのID

    4. Docker。 MySQLイメージ。 my.cnfファイルを変更できません