((END_TIME - START_TIME)*86400) != DURATION,为什么明明相等,但执行却不等?
CREATE   TABLE   DATETEST 
 ( 
 START_TIME   DATE, 
 END_TIME   DATE, 
 DURATION   NUMBER(6) 
 ); 
 INSERT   INTO   DATETEST   VALUES(SYSDATE-60/86400,SYSDATE,60); 
 INSERT   INTO   DATETEST   VALUES(SYSDATE-100/86400,SYSDATE,100);   
 SELECT   START_TIME,END_TIME,DURATION,(END_TIME   -   START_TIME)*86400   FROM   DATETEST   WHERE   ((END_TIME   -   START_TIME)*86400)   !=   DURATION;   
 我这个查出来就是不相等,为什么呀,或应该怎么写?
------解决方案--------------------SELECT START_TIME,END_TIME,trunc(DURATION),trunc((END_TIME - START_TIME)*86400, 13) FROM DATETEST  
 WHERE trunc((END_TIME - START_TIME)*86400)+1 =DURATION; 
 2007-3-1 13:41:13	2007-3-1 13:42:13	60	59.9999999999999 
 2007-3-1 13:40:43	2007-3-1 13:42:23	100	99.9999999999999     
 作为条件(END_TIME - START_TIME)*86400为 59.9999999999999 
 显示是作为60显示
------解决方案--------------------SELECT START_TIME, END_TIME, DURATION, (END_TIME - START_TIME) * 86400, (END_TIME - START_TIME) *86400 - DURATION 
   FROM DATETEST 
  WHERE ((END_TIME - START_TIME) * 86400) != DURATION;   
 改成 
 SELECT START_TIME, END_TIME, DURATION, (END_TIME - START_TIME) * 86400, (END_TIME - START_TIME) *86400 - DURATION 
   FROM DATETEST 
  WHERE abs(((END_TIME - START_TIME) * 86400) - DURATION)  <= &min_num;   
 &min_num 为一个楼主希望的精度小数