-
MySQL 날짜 조건 검색, BETWEEN과 부등호 차이점IT 2025. 4. 16. 07:20반응형
날짜 조건으로 데이터를 조회할 때, BETWEEN을 써야 할지, >, < 부등호를 써야 할지 고민해본 적 있으신가요?
그리고 yyyy-MM-dd와 yyyy-MM-dd HH:mm:ss의 차이점은 정확히 알고 계신가요?
이번 포스팅에서는 MySQL을 사용할 때 헷갈리기 쉬운 날짜 조건 검색에 대해 정리해보았습니다.
특히 실무에서 자주 마주치는 종료일 조건, 다음 날 계산, 포맷에 따른 차이 등을 한 번에 정리해드립니다.
🔍 1. BETWEEN vs <, > : 정말 같을까?
✅ BETWEEN 사용 예시
SELECT * FROM orders WHERE created_at BETWEEN '2024-01-01' AND '2024-01-31';
위 쿼리는 다음과 같은 의미입니다.
created_at 값이 '2024-01-01 00:00:00' 이상 AND '2024-01-31 00:00:00' 이하인 값
즉, yyyy-MM-dd 형식만 넣으면, **시분초는 '00:00:00'**으로 자동 처리됩니다.
결과적으로 2024-01-31 00:00:00 이후의 값은 조회되지 않기 때문에, 1월 31일 하루 전체가 누락될 수 있습니다.
✅ <, > 부등호 연산자 사용 예시
SELECT * FROM orders WHERE created_at >= '2024-01-01' AND created_at < '2024-02-01';
이 방법은 매우 명확하게 동작합니다.
- 2024-01-01 00:00:00부터 시작해서,
- 2024-02-01 00:00:00 직전까지
즉, 1월 31일의 23시 59분 59초까지 모든 데이터를 포함합니다.
이 방식이 가장 실수 없이 안정적인 날짜 범위 필터링 방법입니다.
📆 2. 날짜 포맷에 따른 차이점: 'yyyy-MM-dd' vs 'yyyy-MM-dd HH:mm:ss'
MySQL은 날짜 비교에서 문자열을 내부적으로 DATETIME 타입으로 변환합니다.
그러나 시간 정보가 없으면 기본값은 00:00:00으로 간주됩니다.
📌 예시
-- 같은 날짜지만 시간 정보가 있는지에 따라 다르게 처리됨 WHERE created_at <= '2024-01-31' -- → 2024-01-31 00:00:00 이하 WHERE created_at <= '2024-01-31 23:59:59' -- → 2024-01-31 하루 전체 포함
실수 방지 팁:
- 종료일 조건에는 반드시 다음 날 00시를 미만(<) 조건으로 사용하는 것이 안전합니다.
🧮 3. 다음 날로 바꾸는 MySQL 함수
종료일을 지정하고, 다음 날로 자동 계산하고 싶을 땐 DATE_ADD()를 사용하세요.
✅ 예시 1: 종료일 다음 날 계산
SELECT DATE_ADD('2024-01-31', INTERVAL 1 DAY); -- 결과: 2024-02-01
✅ 예시 2: 조건에 활용
SELECT * FROM orders WHERE created_at >= '2024-01-01' AND created_at < DATE_ADD('2024-01-31', INTERVAL 1 DAY);
위 방식은 다음과 같은 상황에서 유용합니다.
- 사용자가 선택한 날짜 범위를 신뢰할 수 없을 때
- 프론트엔드에서 '2024-01-31'만 내려왔을 때
- 하루 단위 검색이 필요할 때
✅ 정리: 날짜 조건은 이렇게 써보세요!
목적 추천 조건 방식
날짜 범위 전체 포함 >= 시작일 AND < 다음날(종료일 + 1) 하루만 조회 DATE(created_at) = '2024-01-31' 특정 시간 포함 'yyyy-MM-dd HH:mm:ss' 형식 명시
📝 마무리하며
MySQL에서 날짜 검색은 정말 사소한 차이로 원하는 결과를 얻지 못할 수 있습니다.
특히 BETWEEN은 끝 값의 시간까지 고려하지 않으면 의도와 다른 결과가 나올 수 있어 주의가 필요합니다.
앞으로는 날짜 검색할 때 < 다음날 방식으로 깔끔하고 안전하게 처리해보세요!
반응형'IT' 카테고리의 다른 글
🛠️ Jenkins Pipeline: node vs pipeline 차이점과 Sandbox 오류 해결 방법 (1) 2025.05.22 MySQL vs MSSQL 개발자가 반드시 알아야 할 결정적 차이점 8가지 (1) 2025.04.02 Docker와 Docker Compose 설치 방법: 초보자도 쉽게 따라 하는 가이드 (4) 2025.03.25 네이버 블로그와 티스토리 블로그에 같은 글 올리기: 장단점과 꿀팁 (7) 2025.03.17