マッチした日には、二つの日付範囲の間でカウント

E-housma Mardini:

私は2020年4月10日で、予約2020年3月1日に開始と終了を持っ例えば、予約のための2つの日付を持っています。

私はこの部屋には4月に予約していた日数を知るために、選択クエリを作成する場合ので、私は10日のカウントを取得したいです

MySQLでそれを行うには、とにかくそこにあります。

SELECT from_date , to_date  
FROM reservations 
WHERE room_id = ? 
AND from_date >= "2020-04-01" AND to_date >= "2020-04-30"
ゴードン・リノフ:

あなたは使用することができますdatediff() and()以上and、最大の() `。私はあなたが欲しいロジックがあると思います:

SELECT DATEDIFF(LEAST(to_date, '2020-04-30'),
                GREATEST(from_date, '2020-04-01')
               ) + 1  
FROM reservations 
WHERE room_id = ? AND
      to_date >= '2020-04-01' AND
      from_date <= '2020-04-30';

日付ロジックことに注意してくださいWHERE節が変更されました。これは、2つの期間が重複するかどうかを決定するための正しい論理です。第二の開始後の最初の両端。第二の端の前に最初に開始。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=18067&siteId=1