안녕하세요. MySQL에서 날짜로 범위 검색을 하려고 하는데..
예를 들어 SELECT date_base FROM seed ORDER BY date_base ASC; 의 결과가 아래와 같다고 할때
'2022-03-11 10:00:00'
'2022-03-12 10:00:00'
'2022-03-13 10:00:00'
'2022-03-14 10:00:00'
'2022-03-15 10:00:00'
위 date_base를 기반으로 아래 쿼리와 같이 각각의 날짜를 순서대로 검색을 하고자 합니다.
SELECT * FROM xxx WHERE date_start BETWEEN '2022-03-11 10:00:00' AND '2022-03-12 10:00:00'
UNION ALL
SELECT * FROM xxx WHERE date_start BETWEEN '2022-03-12 10:00:00' AND '2022-03-13 10:00:00'
UNION ALL
SELECT * FROM xxx WHERE date_start BETWEEN '2022-03-13 10:00:00' AND '2022-03-14 10:00:00'
UNION ALL
SELECT * FROM xxx WHERE date_start BETWEEN '2022-03-14 10:00:00' AND '2022-03-15 10:00:00'
이 쿼리를 한방에 해결할 수 있는 방법이 없을까요?
SELECT *
FROM (SELECT date_base sdt
, LEAD(date_base) OVER(ORDER BY date_base) edt
FROM seed
) a
INNER JOIN xxx b
ON b.date_start >= a.sdt
AND b.date_start < a.edt -- 범위가 겹치지 않도록 등호(=) 제거
;
감사합니다. :D