DB

SYSDATE(TO_CHAR) 문제

ndlessrain 2012. 12. 7. 14:40
728x90
링크 => http://seojg79.tistory.com/entry/TODATE-%EB%B3%80%ED%99%98-%EC%98%A4%EB%A5%98-%EC%82%AC%EB%A1%80

쿼리문
SELECT TO_DATE(SYSDATE-1, 'YYYY-MM-DD') FROM dual;

결과
0013-03-12

왜 이런 결과가 나오느냐???

이유는 SYSDATE-1 자체로 벌써 DATE 타입인데 또 to_date() 함수로 DATE 타입으로 변경을 하려고 해서 그렇다.

오라클 서버의 nls_date_format과 클라이언트의 포맷이 달라서 오라클 서버는 저런 결과를 내놓게 된다.

오라클 서버의 nls_date_foramt을 사용하던지 trunc() 함수를 이용해서 오늘 날짜만 잘라서 내놓는 것도 하나의 해결책이 되겠다.

즉, A테이블의 date 와 B 테이블의 date 가 모두 DATE 형이라면

where trunc(a.date) = trunc(b.date)

로 비교하면 일자만 비교해서 결과를 내놓게 된다.
728x90