[MSSQL] BETWEEN 날짜 범위 검색 방법 (0.99999)
- 데이터베이스/MSSQL
- 2021. 12. 18.
SQL Server에서 범위를 검색할 때는 BETWEEN 연산자를 사용할 수 있다. BETWEEN 연산자는 부등호(>=, <=) 연산자와 동일한 결과가 조회되기 때문에 어느 것을 사용하든 결과는 동일한다. BETWEEN 연산자가 조금 더 가독성이 좋기 때문에 BETWEEN 연산자를 사용할 것을 권장한다.
[WHERE|AND] [조회할 칼럼명] BETWEEN [시작일자] AND [종료일자] |
날짜 범위 검색
SELECT *
FROM emp
WHERE hiredate BETWEEN CONVERT(DATE, '2021-11-01') AND CONVERT(DATE, '2021-11-30')
입사일(hiredate)을 2021.11.01부터 2021.11.30일 까지 조회한 결과이다.
아래와 같이 부등호(>=, <=)를 사용하여 조회해도 동일한 결과를 얻을 수 있다.
BETWEEN 연산자 대신 부등호를 사용해도 동일한 결과가 조회된다. 부등호의 이점은 같거나 크다(>=), 같거나 작다(<=) 또는 작다(>), 크다(<) 등 조금 더 다양한 범위 조건을 부여할 수 있다.
날짜 + 시간 범위 검색
SELECT *
FROM emp
WHERE editdate BETWEEN CONVERT(DATETIME, '2021-11-01' + ' 00:00:00.000')
AND CONVERT(DATETIME, '2021-11-30' + ' 23:59:59.997')
칼럼 타입이 DATETIME인 경우 시간까지 들어있기 때문에 조건의 값을 부여할 때 시간도 같이 넣어줘야 데이터가 누락되지 않고 조회된다. 오라클 DB인 경우 종료일자에 0.99999를 더해주면 되지만, MSSQL에서는 해당 기능을 사용할 수 없기 때문에 "23:59:59.997" 문자열을 붙여줘야 한다.
DATETIME 타입 : 23:59:59.997
DATETIME2 타입 : 23:59:59.9999999
수치 값 범위 검색
SELECT *
FROM emp
WHERE sal BETWEEN 1000 AND 1500
수치 값 범위도 쉽게 조회할 수 있다.
문자 범위 검색
SELECT *
FROM emp
WHERE ename BETWEEN 'A' AND 'K'
문자열의 해당 칼럼의 문자열 값 앞자리가 범위에 포함될 경우 조회된다. 문자열을 조회할 때는 조회할 값의 길이도 영향을 받기 때문에 사용 시 주의해야 한다.