저는 price_table을 가지고 있는데, start_date와 end_date (판촉 가격의 경우)의 두 열이 있습니다.MySQL의 다른 날짜 범위 내에 주어진 날짜 범위가 있는지 찾으십시오.
주어진 날짜 범위가 이미 존재하는 다른 범주에 속하지 않는지 확인하는 쿼리를 만들려고합니다.
SELECT *
FROM tbl_preco
WHERE isActive = 1 AND (start_date between '2014-12-11 15:45:00' AND '2014-12-13 11:45:00'
OR end_date between '2014-12-11 15:45:00' AND '2014-12-13 11:45:00')
문제는 다음과 같습니다 :이 쿼리를 사용하려고했습니다
하더라도, 그것을 잡고있다 그래서 2014-12-10 15:30:00
에서 2014-12-13 14:30:00
에 프로모션 가격, 설명 BETWEEN 둘 중 어느 것도이있다 주어진 범위는 실제로 DB의 범위 안에 있습니다.
|------GIVEN RANGE-------|
|-------- RANGE IN DB --------|
위의 예는 TRUE로 반환해야하며, 응용 프로그램이 이미 주어진 범위 내에서 프로모션 가격가 있음을 사용자에게 알려줍니다.
이지만 2014-12-10 15:30:00은 '2014-12-11 15:45:00'및 '2014-12-13 11:45:00' 및 2014-12-13 사이에 없습니다. 14:30:00은 '2014-12-11 15:45:00'과 '2014-12-13 11:45:00'사이가 아닙니다. 값을 반환하지 않으므로 문제가 발생하지 않습니다. 저 – BredeBS
@BredeBasualdoSerraino, 물론, 그리고 그것은 정확히 내가 말한 것입니다. 문제는 두 범위가 충돌한다는 것입니다. 시작 날짜와 종료 날짜가 주어진 값 사이에 있지는 않지만 범위가 동시에 발생하고 있으므로 이런 일이 발생하지 않아야합니다. –
날짜 범위 중 하나가 완전히 다른 날짜 범위에 포함될 때이를 감지해야한다고 생각합니다. 편집과 함께 – axiac