を参加しない場合:テスト二つの日付の間隔が他の間隔
+----+----------------------+--------------------+
| id | start_date | end_date |
+----+----------------------+--------------------+
| 1 | 2016-10-24 09:00:00 |2016-10-24 10:30:00 |
| 2 | 2016-10-31 09:00:00 |2016-10-31 10:30:00 |
+----+----------------------+--------------------+
私は私の新しいレコード(new start_date
とend_date
)かどうかをテストしたいない参加ONE他のレコードのSECONDE。
私はすべての可能性をテストするために使用される、しかし、私は、これは長い時間がかかると思います。この問題のために何か良い解決策があると、私はそれが正常に動作し、このクエリをしようと試みたが、時間がかかる:
select * from myTable where
(new_start_date >= myTable.start_date and new_end_date <= myTable.end_date)
or (new_start_date > myTable.start_date and new_end_date < myTable.end_date)
or (new_start_date > myTable.start_date and new_end_date < myTable.end_date)
or (new_start_date < myTable.start_date and new_end_date > myTable.end_date)
or (new_start_date < myTable.start_date and new_end_date = myTable.end_date)
or (new_start_date = myTable.start_date and new_end_date > myTable.end_date)
ですこの問題の解決方法はありますか?
newSD_______startdate___newED_____enddate_____ : return false
newSD_______startdate________enddate___newED__ : return false
___startdate___newSD____newED_____enddate_____ : return false
___startdate___newSD_____enddate___newED______ : return false
____startdate_____enddate___newED___newED_________ : return true
___newED___newED___startdate_____enddate__________ : return true
ありがとう:ここ
があれば、私は
を得ることができるすべての可能性です。
MySQLまたはPostgreSQL? – Barmar
参照してくださいhttp://stackoverflow.com/questions/6571538/checking-a-table-for-time-overlap – Barmar
申し訳ありませんが、私はそのような私のクエリを使用することができます@ MarcBありがとう –