IT/SQLD

[MSSQL] BETWEEN 날짜 범위 검색 방법 (0.99999)

알콩달콩아빠 2023. 5. 22. 21:18
728x90
반응형

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'

 

 

 

문자열의 해당 칼럼의 문자열 값 앞자리가 범위에 포함될 경우 조회된다. 문자열을 조회할 때는 조회할 값의 길이도 영향을 받기 때문에 사용 시 주의해야 한다.

 

출처 : [MSSQL] BETWEEN 날짜 범위 검색 방법 (0.99999) (tistory.com)

728x90
반응형