日期:2014-05-16  浏览次数:20441 次

Oracle时间比较和2个相关函数
1,比较当前时间与指定时间相差分钟数:

select sysdate,
sysdate - to_date('2011-07-07 12:07:33','yyyy-mm-dd hh24:mi:ss')
from dual
输出结果:2011-07-07 12:50:05    0.029537037037037

select sysdate,to_date('2011-07-07 12:07:33','yyyy-mm-dd hh24:mi:ss'),
ROUND(TO_NUMBER(sysdate - to_date('2011-07-07 12:07:33','yyyy-mm-dd hh24:mi:ss')) * 24 * 60)
from dual;
输出结果:2011-07-07 12:50:43    2011-07-07 12:07:33       44

2,同理,可比较相差天数、小时数、秒数等,只需根据需要替换下面的参数:

两个Date类型字段:START_DATE,END_DATE,计算这两个日期的时间差(分别以天,小时,分钟,秒,毫秒):
天:
ROUND(TO_NUMBER(END_DATE - START_DATE))
小时:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24)
分钟:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60)
秒:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60)
毫秒:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60 * 1000)

3、如果想拿系统时间和和输入时间比较如下
select sysdate,to_date(to_char(sysdate,'yyyy-mm-dd HH24:mm:ss'),'yyyy-mm-dd hh24:mi:ss'),
TO_NUMBER(sysdate - to_date(to_char(sysdate,'yyyy-mm-dd HH24:mm:ss'),'yyyy-mm-dd hh24:mi:ss')) * 24
from dual;
这里一定要先吧系统时间转成字符(to_char)在能用to_date函数

4、如果是1小时到24小时之内就如下:
select create_date between (sysdate-1) and (sysdate-1/24) from table

5、算1小时之内的:
select create_date >= (sysdate-1/24) from table
1 楼 向奕昌 2011-07-07  
自己顶下,oracle里面这函数觉的还不错