日期:2014-05-17  浏览次数:20781 次

字符串比较....
表A中有两个字段time1,time2   ,都是字符形数据    
time1                                                 time2    
2006-12-04   10:18:09                   2006-12-07
2006-12-08   11:45:04                   2006-12-09
2006-12-10   23:18:01                   2006-12-11


time1取到日为止即:2006-12-04、2006-12-08、2006-12-10
选出time2比time1大24小时的数据
结果为
time1                                                 time2    

2006-12-08   11:45:04                   2006-12-09
2006-12-10   23:18:01                   2006-12-11


------解决方案--------------------
select
*
from table

where to_date(time2, 'yyyy-mm-dd hh24:mi:ss ') -
to_date(to_char(time1, 'yyyy-mm-dd '), 'yyyy-mm-dd hh24:mi:ss ')> =1
------解决方案--------------------
基本思路:将TIME2和time1都转换为日期格式直接相减的结果*24 > 24的就是了

(to_date(time2,..)-to_date(time1,...))*24 > 24

需要注意的问题是time2的格式是没有时分秒的,所以在转换成日期格式后默认的是0点0分0秒

比如
SQL> select to_char(to_date( '2006-10-11 ', 'yyyy-mm-dd '), 'yyyy-mm-dd hh24:mi:ss ') from dual;

TO_CHAR(TO_DATE( '2006-10-11 ', '
------------------------------
2006-10-11 00:00:00
------解决方案--------------------
如果是TIME1,TIME2是字符型,那么就需要转换,
SELECT time1,time2 FROM table_name where TO_DATE(time2, 'yyyy-mm-dd ')-TO_DATE(time1, 'yyyy-mm-dd hh24:mi:ss ')> 2

如果time1,time2是日期型,
SELECT time1,time2 FROM table_name where time2-time1> 2

分两种情况,应该可行了