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

mysqlで日付のギャップを見つける

    これにより、正しい結果が得られるはずです:

    select
      id,
      min(startDate) as startFreeDate,
      count(*) - (endDate is null) numFreeDays
    from (
      select
        pb1.id,
        pb1.bookingDate startDate,
        min(pb2.bookingDate) endDate
      from
        pricesBookings pb1 left join pricesBookings pb2
        on pb1.id=pb2.id
           and pb2.price>0
           and pb2.bookingDate>pb1.bookingDate
      where
        pb1.price=0
      group by
        pb1.id,
        pb1.bookingDate
    ) s
    group by id, endDate
    order by id, startDate
    

    こちら をご覧ください 。

    たとえば、14日間のすべての空きスロットを検索する必要がある場合は、HAVINGを追加できます:

    group by id, endDate
    having count(*) - (endDate is null) >= 14
    order by id, startDate
    


    1. MySql接続でSSLを使用しているかどうかをどのように判断しますか?

    2. 開発プロジェクト中のミッションクリティカルなアクセスアプリケーションの特定と管理

    3. 合計で複数の左結合

    4. ターミナルからMySQLを使用してデータベースをインポートするにはどうすればよいですか?