Oracle날짜 기간 조회 +0.99999를 하는이유

KIMEUNSUN·2024년 10월 14일

DataBase

목록 보기
4/5

날짜 기간을 조회하는 방법을 검색하던 도중 궁금증이 생김

문제 설명:

  • TO_DATE('20241014', 'YYYYMMDD')2024-10-14 00:00:00를 반환
  • Oracle에서 날짜(DATE) 데이터 타입은 기본적으로 날짜와 시간을 모두 포함하지만, TO_DATE 함수를 사용하면 시간은 기본적으로 00:00:00으로 설정되기 때문
  • BETWEEN 조건은 >=<=의 범위를 가지므로, 실제로는 2014-10-14 00:00:00까지 포함하는 것이지, 2014-10-14 23:59:59까지의 시간을 포함하지 않음
  • 그래서 14일하루 전체 데이터를 조회하려면, 시간을 23:59:59로 만들어야 함

0.99999의 의미:

Oracle에서 날짜 데이터는 소수점으로 시간을 표현할 수 있음

  • 1일은 24시간이므로, 0.5는 12시간을 의미
  • 0.99999는 거의 하루의 끝을 의미하며, 이는 23:59:59에 근접한 시간입니다.

따라서, TO_DATE('20241014', 'YYYYMMDD') + 0.99999는:

  • 2014-10-14 23:59:59과 같은 의미로 동작하여, 14일의 마지막 순간까지 데이터를 포함시킬 수 있음

결론:

  • TO_DATE(#{date2}, 'YYYYMMDD')는 기본적으로 00:00:00이므로 하루의 첫 번째 순간까지만 포함하게됨
  • + 0.99999를 하면 해당 날짜의 마지막 시간(23:59:59)까지 포함할 수 있음

0개의 댓글