나는 이런 식으로 내 테이블 StartDate
및 EndDate
에 있습니다테스트 경우
+----+----------------------+--------------------+
| 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)
인가 :
내가 모든 가능성을 테스트하는 데 사용,하지만 난이이 문제에 대한 좋은 해결책이 시간이 오래 걸릴 생각, 내가 그것을 잘 작동하지만, 시간을이 쿼리에 tryed 이 문제에 대한 다른 해결책이 있습니까?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
미안 해요 postgreSQL –