MSSQL BETWEEN 연산자, 숫자와 날짜 범위 조건 쉽게 쓰는 법
📌 BETWEEN으로 더 간단하고 직관적인 범위 검색 방법을 알아봅니다
데이터베이스에서 원하는 조건의 데이터를 뽑아내는 건 생각보다 까다로운 일입니다.
특히 숫자 범위나 날짜 범위를 조건으로 걸어야 할 때, 조건식을 길게 쓰면 가독성도 떨어지고 실수할 확률도 높아집니다.
그럴 때 BETWEEN 연산자를 사용하면 훨씬 간단하게 조건을 표현할 수 있습니다.
MSSQL에서는 BETWEEN을 통해 예를 들어 점수가 70 이상 90 이하인 학생이나, 특정 날짜 구간에 해당하는 주문 내역을 아주 직관적으로 조회할 수 있습니다.
이 글에서는 기본 문법부터 실전 예제까지, BETWEEN을 제대로 활용하는 방법을 차근차근 알려드리겠습니다.
단순히 WHERE 절에 조건을 나열하는 대신, BETWEEN 하나로 범위를 지정하면 SQL 쿼리문이 깔끔해집니다.
숫자, 날짜, 문자 데이터까지 폭넓게 활용할 수 있고, 포함 범위를 명확히 지정할 수 있어 데이터 누락이나 초과 선택 문제를 줄일 수 있습니다.
다만, 몇 가지 주의해야 할 사용 규칙도 존재합니다.
아래에서 문법, 예제, 주의사항까지 모두 다뤄드리니, 초보 개발자부터 숙련자까지 꼭 참고해보세요.
📋 목차
🔗 MSSQL BETWEEN 연산자란?
BETWEEN 연산자는 SQL에서 특정 범위의 값을 포함하는 데이터를 조회할 때 사용됩니다.
이 범위는 숫자, 날짜, 문자형 데이터까지 폭넓게 적용할 수 있습니다.
예를 들어, 학생 점수가 70점 이상 90점 이하인 경우나, 주문 날짜가 2025년 1월 1일부터 2025년 1월 31일까지인 경우를 간단하게 표현할 수 있습니다.
조건문을 길게 쓰지 않고도 범위를 직관적으로 나타낼 수 있다는 것이 가장 큰 장점입니다.
MSSQL에서 BETWEEN은 양쪽 경계값을 포함한다는 특징이 있습니다.
즉, BETWEEN 70 AND 90이라고 하면 70과 90 모두 결과에 포함됩니다.
이 점은 단순히 >=, <= 연산자를 조합한 조건과 동일하지만, 가독성과 유지보수 측면에서 훨씬 효율적입니다.
-- 점수가 70점 이상 90점 이하인 학생 조회
SELECT *
FROM Students
WHERE score BETWEEN 70 AND 90;
💡 TIP: BETWEEN은 범위 검색 시 코드 길이를 줄여주고, 조건의 의미를 직관적으로 전달할 수 있어 협업 시에도 유용합니다.
또한, BETWEEN은 날짜 데이터와 함께 자주 사용됩니다.
예를 들어 BETWEEN '2025-01-01' AND '2025-01-31' 형태로 작성하면 해당 월의 모든 데이터를 한 번에 가져올 수 있습니다.
단, 시간까지 포함된 DATETIME 형식에서는 종료 날짜에 주의해야 하며, 이 부분은 뒤에서 자세히 다루겠습니다.
🛠️ 기본 문법과 사용 예제
MSSQL에서 BETWEEN 연산자의 기본 문법은 다음과 같습니다.
BETWEEN 뒤에는 하한값과 상한값을 지정하며, 두 값 사이에는 AND 키워드를 사용합니다.
하한값과 상한값 모두 결과에 포함된다는 점이 핵심입니다.
SELECT 컬럼명
FROM 테이블명
WHERE 컬럼명 BETWEEN 하한값 AND 상한값;
예를 들어, 점수가 70점 이상 90점 이하인 학생 정보를 조회하려면 다음과 같이 작성합니다.
SELECT *
FROM Students
WHERE score BETWEEN 70 AND 90;
날짜 범위를 조건으로 주는 경우도 매우 간단합니다.
예를 들어 2025년 1월 한 달 동안의 주문 데이터를 조회하려면 다음과 같이 작성합니다.
SELECT *
FROM Orders
WHERE order_date BETWEEN '2025-01-01' AND '2025-01-31';
⚠️ 주의: DATETIME 컬럼에서 날짜만 지정하면 시간 정보가 포함된 데이터가 누락될 수 있습니다.
종료 날짜를 포함하려면 ‘2025-01-31 23:59:59’와 같이 명시하거나, 다음 날의 0시 이전까지로 설정하는 방법을 사용하세요.
⚙️ 숫자 범위 조건 걸기
BETWEEN 연산자는 숫자 범위 조건을 간단하게 지정할 수 있는 가장 직관적인 방법입니다.
예를 들어, 특정 점수대에 속한 학생 목록이나, 상품 가격이 일정 범위에 해당하는 데이터를 필터링할 때 유용합니다.
BETWEEN은 기본적으로 하한값과 상한값 모두를 포함하므로, 점수가 정확히 70점이나 90점인 학생도 결과에 나타납니다.
-- 가격이 10,000원 이상 50,000원 이하인 상품 조회
SELECT product_name, price
FROM Products
WHERE price BETWEEN 10000 AND 50000;
BETWEEN을 사용하면 같은 조건을 price >= 10000 AND price <= 50000처럼 길게 쓰지 않아도 되기 때문에 SQL이 깔끔해집니다.
또한, 조건의 가독성이 높아져서 협업 시에도 의도를 쉽게 파악할 수 있습니다.
📌 조건 범위를 동적으로 지정하기
BETWEEN의 범위값은 변수나 파라미터로도 지정할 수 있습니다.
이는 특히 프로그래밍 언어나 저장 프로시저에서 유용합니다.
사용자로부터 최소값과 최대값을 입력받아 쿼리에 적용하면 다양한 상황에서 재사용이 가능합니다.
DECLARE @minScore INT = 70;
DECLARE @maxScore INT = 90;
SELECT student_name, score
FROM Students
WHERE score BETWEEN @minScore AND @maxScore;
💎 핵심 포인트:
BETWEEN은 숫자 범위 지정 시 >= 와 <= 조건을 대체할 수 있는 깔끔한 방법입니다.
다만, 포함 범위인지 배제 범위인지 명확히 이해하고 사용해야 합니다.
🔌 날짜 범위 조건 걸기
BETWEEN은 날짜 데이터를 조회할 때도 자주 사용됩니다.
예를 들어, 특정 기간 동안의 주문 내역, 가입자 통계, 매출 데이터 등을 손쉽게 가져올 수 있습니다.
날짜 비교는 숫자 범위와 동일하게 하한값과 상한값을 포함하는 방식으로 동작합니다.
-- 2025년 1월 1일부터 1월 31일까지의 주문 내역 조회
SELECT order_id, customer_name, order_date
FROM Orders
WHERE order_date BETWEEN '2025-01-01' AND '2025-01-31';
만약 DATETIME 타입 컬럼에 시간 정보가 포함되어 있다면, 종료 날짜 설정에 주의해야 합니다.
종료 날짜를 단순히 ‘2025-01-31’로 지정하면 1월 31일 00:00:00까지만 포함되어 이후 시간대 데이터는 제외됩니다.
📌 시간까지 포함하는 날짜 범위
이 문제를 해결하려면 종료 날짜를 '2025-01-31 23:59:59'로 지정하거나, 다음 날 0시 이전까지 포함하는 조건을 사용합니다.
-- 1월 31일 전체 시간 포함
SELECT order_id, customer_name, order_date
FROM Orders
WHERE order_date BETWEEN '2025-01-01' AND '2025-01-31 23:59:59';
⚠️ 주의: 날짜 범위 조건에서 BETWEEN은 시작일과 종료일 모두 포함하므로, 정확한 분석을 위해서는 데이터의 시간 포맷과 저장 방식까지 반드시 확인해야 합니다.
💡 TIP: 날짜 범위 필터링 시 CAST()나 CONVERT() 함수를 활용하면 시간 정보를 제거하고 순수 날짜 비교가 가능합니다.
💡 BETWEEN 사용 시 주의사항
BETWEEN 연산자는 편리하지만, 몇 가지 주의해야 할 점이 있습니다.
이를 이해하고 사용하면 예기치 못한 데이터 누락이나 잘못된 결과를 방지할 수 있습니다.
📌 경계값 포함 여부
BETWEEN은 기본적으로 하한값과 상한값을 포함합니다.
즉, BETWEEN 70 AND 90은 70점과 90점 모두 결과에 나타납니다.
만약 경계값을 제외하고 싶다면 > 하한값 AND < 상한값 형식의 조건을 사용해야 합니다.
📌 데이터 타입 일치
BETWEEN을 사용할 때는 비교하는 값의 데이터 타입이 일치해야 합니다.
예를 들어, 숫자 컬럼에 문자열 범위를 비교하거나, 날짜 컬럼에 숫자 범위를 비교하면 오류가 발생하거나 의도치 않은 결과가 나올 수 있습니다.
📌 성능 고려
대규모 데이터셋에서 BETWEEN을 사용할 경우, 인덱스가 적절히 설정되어 있지 않으면 쿼리 속도가 느려질 수 있습니다.
범위 검색은 전체 스캔이 발생할 수 있으므로, 필요한 경우 INDEX를 추가하거나 WHERE 조건 최적화를 검토하세요.
- 🛠️BETWEEN은 양쪽 경계값을 포함한다.
- ⚙️데이터 타입이 일치해야 예기치 않은 결과를 방지할 수 있다.
- 🔌대량 데이터에서는 인덱스 최적화를 고려한다.
💎 핵심 포인트:
BETWEEN은 간단하고 직관적이지만, 경계값 포함 여부와 데이터 타입, 성능 이슈를 반드시 확인한 뒤 사용하는 것이 안전합니다.
❓ 자주 묻는 질문 (FAQ)
BETWEEN은 양쪽 경계값을 포함하나요?
날짜 범위 검색 시 주의할 점은 무엇인가요?
BETWEEN 대신 다른 연산자를 써도 되나요?
문자열에도 BETWEEN을 사용할 수 있나요?
성능 저하를 피하려면 어떻게 해야 하나요?
BETWEEN에서 하한과 상한 순서를 바꾸면 되나요?
NULL 값은 BETWEEN으로 비교할 수 있나요?
BETWEEN이 포함 범위인지 배제 범위인지 헷갈릴 때 어떻게 하나요?
📌 BETWEEN 연산자로 더 깔끔하게 범위 조건 처리하기
MSSQL의 BETWEEN 연산자는 숫자, 날짜, 문자열 등 다양한 데이터 타입에서 범위를 지정할 때 매우 직관적이고 간결하게 쓸 수 있는 강력한 도구입니다.
특히 범위의 시작과 끝을 모두 포함한다는 특징 덕분에 >=, <= 조건을 따로 작성할 필요가 없습니다.
다만, DATETIME 컬럼의 시간 처리, 데이터 타입 일치, 성능 최적화 등의 주의사항을 꼭 기억해야 합니다.
이 글에서 소개한 문법과 예제, 주의점을 숙지하면 BETWEEN을 더욱 안전하고 효율적으로 활용할 수 있습니다.
결과적으로 가독성이 좋은 SQL 코드를 작성하면서도 원하는 범위의 데이터를 정확히 추출할 수 있을 것입니다.
🏷️ 관련 태그 : MSSQL, BETWEEN, SQL문법, 범위검색, 날짜조건, 숫자조건, SQL튜닝, 데이터베이스, 쿼리최적화, DB개발