메뉴 닫기

MSSQL BETWEEN 연산자, 숫자와 날짜 범위 조건 쉽게 쓰는 법

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 모두 결과에 포함됩니다.
이 점은 단순히 >=, <= 연산자를 조합한 조건과 동일하지만, 가독성과 유지보수 측면에서 훨씬 효율적입니다.

CODE BLOCK
-- 점수가 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 키워드를 사용합니다.
하한값과 상한값 모두 결과에 포함된다는 점이 핵심입니다.

CODE BLOCK
SELECT 컬럼명
FROM 테이블명
WHERE 컬럼명 BETWEEN 하한값 AND 상한값;

예를 들어, 점수가 70점 이상 90점 이하인 학생 정보를 조회하려면 다음과 같이 작성합니다.

CODE BLOCK
SELECT *
FROM Students
WHERE score BETWEEN 70 AND 90;

날짜 범위를 조건으로 주는 경우도 매우 간단합니다.
예를 들어 2025년 1월 한 달 동안의 주문 데이터를 조회하려면 다음과 같이 작성합니다.

CODE BLOCK
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점인 학생도 결과에 나타납니다.

CODE BLOCK
-- 가격이 10,000원 이상 50,000원 이하인 상품 조회
SELECT product_name, price
FROM Products
WHERE price BETWEEN 10000 AND 50000;

BETWEEN을 사용하면 같은 조건을 price >= 10000 AND price <= 50000처럼 길게 쓰지 않아도 되기 때문에 SQL이 깔끔해집니다.
또한, 조건의 가독성이 높아져서 협업 시에도 의도를 쉽게 파악할 수 있습니다.

📌 조건 범위를 동적으로 지정하기

BETWEEN의 범위값은 변수나 파라미터로도 지정할 수 있습니다.
이는 특히 프로그래밍 언어나 저장 프로시저에서 유용합니다.
사용자로부터 최소값과 최대값을 입력받아 쿼리에 적용하면 다양한 상황에서 재사용이 가능합니다.

CODE BLOCK
DECLARE @minScore INT = 70;
DECLARE @maxScore INT = 90;

SELECT student_name, score
FROM Students
WHERE score BETWEEN @minScore AND @maxScore;

💎 핵심 포인트:
BETWEEN은 숫자 범위 지정 시 >= 와 <= 조건을 대체할 수 있는 깔끔한 방법입니다.
다만, 포함 범위인지 배제 범위인지 명확히 이해하고 사용해야 합니다.

🔌 날짜 범위 조건 걸기

BETWEEN은 날짜 데이터를 조회할 때도 자주 사용됩니다.
예를 들어, 특정 기간 동안의 주문 내역, 가입자 통계, 매출 데이터 등을 손쉽게 가져올 수 있습니다.
날짜 비교는 숫자 범위와 동일하게 하한값과 상한값을 포함하는 방식으로 동작합니다.

CODE BLOCK
-- 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시 이전까지 포함하는 조건을 사용합니다.

CODE BLOCK
-- 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은 양쪽 경계값을 포함하나요?
네. MSSQL에서 BETWEEN은 하한값과 상한값 모두를 포함합니다.
날짜 범위 검색 시 주의할 점은 무엇인가요?
DATETIME 컬럼에 시간 정보가 포함되어 있다면 종료 날짜를 ‘YYYY-MM-DD 23:59:59’로 지정하거나 다음 날 0시 이전까지 조건을 걸어야 합니다.
BETWEEN 대신 다른 연산자를 써도 되나요?
네. >= 와 <= 연산자를 조합해 같은 조건을 만들 수 있지만, BETWEEN이 더 간단하고 가독성이 좋습니다.
문자열에도 BETWEEN을 사용할 수 있나요?
가능합니다. 문자열 비교는 사전순으로 판단되므로, 알파벳이나 한글 범위를 지정할 때 사용할 수 있습니다.
성능 저하를 피하려면 어떻게 해야 하나요?
인덱스를 적절히 설정하고, 불필요하게 넓은 범위를 지정하지 않는 것이 좋습니다.
BETWEEN에서 하한과 상한 순서를 바꾸면 되나요?
순서를 바꾸면 결과가 나오지 않습니다. 항상 하한값이 먼저, 상한값이 나중에 와야 합니다.
NULL 값은 BETWEEN으로 비교할 수 있나요?
불가능합니다. NULL 값 비교는 IS NULL 또는 IS NOT NULL을 사용해야 합니다.
BETWEEN이 포함 범위인지 배제 범위인지 헷갈릴 때 어떻게 하나요?
MSSQL 공식 문서를 확인하거나, 작은 데이터셋으로 테스트해보면 쉽게 확인할 수 있습니다.

📌 BETWEEN 연산자로 더 깔끔하게 범위 조건 처리하기

MSSQL의 BETWEEN 연산자는 숫자, 날짜, 문자열 등 다양한 데이터 타입에서 범위를 지정할 때 매우 직관적이고 간결하게 쓸 수 있는 강력한 도구입니다.
특히 범위의 시작과 끝을 모두 포함한다는 특징 덕분에 >=, <= 조건을 따로 작성할 필요가 없습니다.
다만, DATETIME 컬럼의 시간 처리, 데이터 타입 일치, 성능 최적화 등의 주의사항을 꼭 기억해야 합니다.
이 글에서 소개한 문법과 예제, 주의점을 숙지하면 BETWEEN을 더욱 안전하고 효율적으로 활용할 수 있습니다.
결과적으로 가독성이 좋은 SQL 코드를 작성하면서도 원하는 범위의 데이터를 정확히 추출할 수 있을 것입니다.


🏷️ 관련 태그 : MSSQL, BETWEEN, SQL문법, 범위검색, 날짜조건, 숫자조건, SQL튜닝, 데이터베이스, 쿼리최적화, DB개발