[ORACLE] 날짜 변환 검색 (시분초)

오라클을 사용하다보면, 날짜로 검색해야 하는 일들이 많이 있다. 단순 날짜로 검색을 하는 기법은 간단하다. 하지만, 시분초로 상세하게 검색을 하기 위해서는 형변환을 계속 해주어야 하여 정해진 패턴대로 쿼리를 작성하는 것이 좋다.

 

날짜로 검색을 하기 위해서는 형변환을 하여 WHERE 절에 삽입해야 한다. 보통은 YYYYMMDD 형태의 날짜 표현을 많이 사용하므로 이 형태의 기준값을 만드는 것이 효율이 좋다고 생각한다. 하지만 날짜의 형태를 사용할때는 YYYY-MM-DD 를 많이 사용해서 한번 더 바꾸기를 해야 한다는 점이다. 어떤 업무 하나를 진행할때는 Script 창에 모아놓고 쿼리를 실행하기 때문에, 하나의 기준값이 변경되면 모든 것이 변경되는 것이 좋다.

 

1. YYYY-MM-DD 형태 검색

-- YYYY-MM-DD 형태 검색
  SELECT *
    FROM LOG_INFRM A
   WHERE 1=1
     AND A.LOG_DATE = TO_DATE('2023-07-24 00:00:27', 'YYYY-MM-DD HH24:MI:SS')
     AND A.LOG_DATE = TO_DATE('2023-07-24 23:00:00', 'YYYY-MM-DD HH24:MI:SS')
   ORDER BY A.LOG_DATE DESC
   ;
   

변경된 것은 아래의 쿼리이다. YYYYMMDD 형태로 날짜 형식을 바꾸었고, 시분초도 세팅이 될 수 있도록 작성하였다. 원래는 '20230724' 를 바꾸고 '2023-07-24' 를 다른 일자로 바꾸는 방식으로 두번이나 바꾸기 하였지만, 이제는 한번만 하면 되는 것이다. 이러한 개념을 사용하는 이유는 보통 버전이라는 정보에는 날짜 개념이 포함되기 때문이다.

 

2. YYYYMMDD 형태 검색

  -- YYYYMMDD 형태 검색
  SELECT *
    FROM LOG_INFRM A
   WHERE 1=1
     AND A.LOG_DATE = TO_DATE('20230724') + ( 0/24) + 0/(24*60) + 10/(24*60*60)
     AND A.LOG_DATE = TO_DATE('20230724') + (23/24) + 59/(24*60) + 30/(24*60*60)
   ORDER BY A.LOG_DATE DESC
   ;
   

이러한 작은 변화들이 모여 업무의 속도성을 올려준다고 생각한다. 개발자는 반복되는 업무는 최소화 하여 업무를 진행해야 한다.

 

Designed by JB FACTORY