머 어제 오늘 삽질이 아니다보니...
자주 글을 올리게 된다.
이번에 문제가 된건 바로 ROUND 함수다.
특히나 저장된 시간 혹은 현재시간(SYSDATE) 값을 ROUND 함수를 사용하는경우에
문제점이 되었다.
테스트를 해보자면.. 뭐 오전/오후로 나눠서 해보면 알수있는지라...
아니면 테스트로 데이터들중에 오전/오후로 나뉘어진 데이터를 SELECT 해보자
SELECT ROUND(SYSDATE) FROM DUAL
오늘이 22일 오전이라면
2009-01-22
위와 같은 결과값이 나올것이다.. 오후가 된다면
2009-01-23
위와 같은 결과값이 나올것이라고 예상해본다... -_-ㅋ 아마도 맞을것이다..
내가 원하던값은 22일을 원했다...
그런데 23일 나온건 ROUND 라는 함수가 반올림을 해주는 함수인데.. 즉 24시간기준으로...
12시간이 지나면 반올림되어 22일에서 23일로 바뀌게 되는것이었다.
물론 함수를 잘 꿰뚫고 계신분들은 멀 저런걸로 해매냐! 할지도 모르지만..
의외로 ROUND 함수를 많이 사용하고, 보이는 SQL에 ROUND가 많다보면 자신도 모르게.. 막 쓰게된다..
Ctrl + C , V 가 판치지 않던가??
대안은 간단하게도 TRUNC 함수로 쓰면.. 시간에 해당되는 부분을 버려주고 원하는 날짜만 바로바로 가져올수 있다.
SELECT TRUNC(SYSDATE) FROM DUAL
오전/오후 상관없이 원하는 날짜를 가져올수있당!! ㅎㅎ
쩝... 클날뻔했네.. 팀장님이 확인안해주셨음... -_-;; 아직 멀고도 험한 나의 개발인생...
자주 글을 올리게 된다.
이번에 문제가 된건 바로 ROUND 함수다.
특히나 저장된 시간 혹은 현재시간(SYSDATE) 값을 ROUND 함수를 사용하는경우에
문제점이 되었다.
테스트를 해보자면.. 뭐 오전/오후로 나눠서 해보면 알수있는지라...
아니면 테스트로 데이터들중에 오전/오후로 나뉘어진 데이터를 SELECT 해보자
SELECT ROUND(SYSDATE) FROM DUAL
오늘이 22일 오전이라면
2009-01-22
위와 같은 결과값이 나올것이다.. 오후가 된다면
2009-01-23
위와 같은 결과값이 나올것이라고 예상해본다... -_-ㅋ 아마도 맞을것이다..
내가 원하던값은 22일을 원했다...
그런데 23일 나온건 ROUND 라는 함수가 반올림을 해주는 함수인데.. 즉 24시간기준으로...
12시간이 지나면 반올림되어 22일에서 23일로 바뀌게 되는것이었다.
물론 함수를 잘 꿰뚫고 계신분들은 멀 저런걸로 해매냐! 할지도 모르지만..
의외로 ROUND 함수를 많이 사용하고, 보이는 SQL에 ROUND가 많다보면 자신도 모르게.. 막 쓰게된다..
Ctrl + C , V 가 판치지 않던가??
대안은 간단하게도 TRUNC 함수로 쓰면.. 시간에 해당되는 부분을 버려주고 원하는 날짜만 바로바로 가져올수 있다.
SELECT TRUNC(SYSDATE) FROM DUAL
오전/오후 상관없이 원하는 날짜를 가져올수있당!! ㅎㅎ
쩝... 클날뻔했네.. 팀장님이 확인안해주셨음... -_-;; 아직 멀고도 험한 나의 개발인생...