posted by 구름너머 2005. 12. 8. 15:41

select to_char((to_date('20051201191733','yyyymmddhh24miss') -
to_date('20051201191724','yyyymmddhh24miss'))*24*60*60) as t
from dual

날자함수를 이용하여 초를 계산하려고 합니다.

그런데 위의 경우에 계산 오차가 있는듯합니다.

9가 정확히 나와야 하는데

9.00000000000000000000000000000000000003

이렇게 나옵니다.......ㅠㅠ!

lpad(숫자,7,'0') 으로 실행하면 위의 경우에

lpad가 안 먹힙니다.

고수님들의 한수 부탁합니다.

select lpad((to_date('20051201191733','yyyymmddhh24miss') -
to_date('20051201191724','yyyymmddhh24miss'))*24*60*60,7,'0') as t
from dual

to_char는 값을 찍어보기 위함이며,

위 sql을 실행시 값이 아래와 같이 나옵니다.

9.00000

원인은 날짜 계산시 정수값이 안나와서 그렇습니다.

제대로 나로려면

0000009 이렇게 나와야 합니다.

해결방법은 나머지를 버리는 trunc로 씌우면 되는데

to_date 날자변환시의 버그이지 않을까해서 ^^