반응형
궁금증: 사용자가 날짜 입력을 숫자만 하지 않고 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형을 바로 사용했기 때문이다.
반응형