오라클 날짜 검색 0 2 1,227

by 수다링 [SQL Query] [2017.10.12 10:23:14]


안녕하세요 쿼리짜다가 궁금한게 있어서 글 써보아요...

특정날짜 사이의 데이터를 검색하고 싶습니다.

예를들어 20170101부터 20170110 사이의 날짜를 검색하고싶을때 

1) aa between '20170101' and '20170111' 이렇게 쓰거나

2) aa >='20170101' and aa<'20170111'

둘중 어느방식이 더 효율적인가요??

a>=to_date('20170101','yyyymmdd') and a<to_date('20170110','yyyymmdd')+1; 이렇게 쓰는건 2번방식과 의마가 동일한 건가요??

아니면 또 다른방법이 있을까요?

*참고로 aa 칼럼은 date 타입입니다.

 

감사합니다.^^

 

by 우리집아찌 [2017.10.12 10:51:11]

단순히 AA만 조회 조건이시면 둘다 같으실겁니다.

그리고 AA가 DATE TYPE이시면 WHERE 절 조건에 TO_DATE() 함수는 반드시 쓰셔야죠.


by 마농 [2017.10.12 10:52:14]

1. 1)번은 기간이 틀렸구요.
   - 2017-01-11 00:00:00 데이터가 포함 될 소지가 있음.
   - 효율을 따지기 전에 정확한지부터 따져야 합니다.(효율은 어차피 둘다 범위 검색이므로 차이 없음)
2. 1)번, 2)번 은 비교 타입이 틀리네요.
   - 이 경우 사용 환경에 따라 에러 날 수도 있고 안 날 수도 있네요.
   - 결론은 틀린 사용법이라고 보시면 됩니다.
   - 비교 되는 좌,우변 항목의 타입을 맞춰줘야 합니다.
   - 될 수 있으면 컬럼은 그대로 두고 조건을 가공하는게 좋습니다.
3. to_date 사용방법이 정확한 사용법입니다.
   - AND a >= TO_DATE('20170101', 'yyyymmdd')
   - AND a <  TO_DATE('20170110', 'yyyymmdd') + 1
4 TO_DATE('20170110', 'yyyymmdd') + 0.99999 하면
   - 이퀄이 포함된 <= 조건이나 between 조건이 사용 가능합니다.
   - AND a >= TO_DATE('20170101', 'yyyymmdd')
   - AND a <= TO_DATE('20170110', 'yyyymmdd') + 0.99999

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입