반응형

궁금증: 사용자가 날짜 입력을 숫자만 하지 않고 30/08/2010 으로 입력한 경우
어떻게 날짜를 비교해야 할까?

방안1: REPLACE를 사용해서 '/'기호를 ''로 치환한 후 DATE형으로 변경한다.
TO_DATE(TO_CHAR(REPLACE(REC_DT, '/', '')), 'DDMMYYYY')

예) SELECT ITEM_CD, REC_DT
        FROM DMSIOM
      WHERE PROD_CD=NVL('',PROD_CD)
           AND TO_DATE(TO_CHAR(REPLACE(REC_DT, '/', '')), 'DDMMYYYY')
                  BETWEEN TO_DATE(TO_CHAR(REPLACE('01/08/2010', '/', '')), 'DDMMYYYY') 
                          AND TO_DATE(TO_CHAR(REPLACE('01/09/2010', '/', '')), 'DDMMYYYY')

방안2: /로 입력받은것도 TO_DATE의 날짜형식중 하나이므로 바로 DATE형으로 변경한다.
         TO_DATE(컬럼명,'DD/MM/YYYY')


내가 생각한건 1안이지만 최적의 방안은 2안이다.
TO_CHAR로 변경할 필요없이 TO_DATE형을 바로 사용했기 때문이다.
반응형

+ Recent posts