Oracle sql 计算时间差表达式

 
--取第几天的数据。
select from table where trunc(sysdate)-trunc(cr)=1; 
select from table where trunc(sysdate)-trunc(cr)=2; 
select from table where trunc(sysdate)-trunc(cr)=8; 
 
 
 
--获取两时间的相差豪秒数
select ceil((To_date('2008-05-02 00:00:00' 'yyyy-mm-dd hh24-mi-ss') - To_date('2008-04-30 23:59:59' 'yyyy-mm-dd hh24-mi-ss')) * 24 * 60 * 60 * 1000) 相差豪秒数 FROM DUAL;
/*
相差豪秒数
----------
  86401000
1 row selected
*/
 
--获取两时间的相差秒数
select ceil((To_date('2008-05-02 00:00:00' 'yyyy-mm-dd hh24-mi-ss') - To_date('2008-04-30 23:59:59' 'yyyy-mm-dd hh24-mi-ss')) * 24 * 60 * 60) 相差秒数 FROM DUAL;
/*
相差秒数
----------
     86401
1 row selected
*/
 
--获取两时间的相差分钟数
select ceil(((To_date('2008-05-02 00:00:00' 'yyyy-mm-dd hh24-mi-ss') - To_date('2008-04-30 23:59:59' 'yyyy-mm-dd hh24-mi-ss'))) * 24 * 60)  相差分钟数 FROM DUAL;
/*
相差分钟数
----------
      1441
1 row selected
*/
 
--获取两时间的相差小时数
select ceil((To_date('2008-05-02 00:00:00' 'yyyy-mm-dd hh24-mi-ss') - To_date('2008-04-30 23:59:59' 'yyyy-mm-dd hh24-mi-ss')) * 24)  相差小时数 FROM DUAL;
/*
相差小时数
----------
        25
1 row selected
*/
 
--获取两时间的相差天数
select ceil((To_date('2008-05-02 00:00:00' 'yyyy-mm-dd hh24-mi-ss') - To_date('2008-04-30 23:59:59' 'yyyy-mm-dd hh24-mi-ss')))  相差天数 FROM DUAL;
/*
相差天数
----------
         2
1 row selected
*/
 
--获取两时间月份差
select (EXTRACT(year FROM to_date('2009-05-01','yyyy-mm-dd')) - EXTRACT(year FROM to_date('2008-04-30','yyyy-mm-dd'))) * 12 + 
       EXTRACT(month FROM to_date('2008-05-01','yyyy-mm-dd')) - EXTRACT(month FROM to_date('2008-04-30','yyyy-mm-dd')) months
from dual;
/*
MONTHS
----------
        13
1 row selected
*/
 
--获取两时间年份差
select EXTRACT(year FROM to_date('2009-05-01','yyyy-mm-dd')) - EXTRACT(year FROM to_date('2008-04-30','yyyy-mm-dd')) years from dual;
/*
YEARS
----------
         1
1 row selected
*/

posted on 2015-09-30 14:57  一克拉的铂金  阅读(1513)  评论(0编辑  收藏  举报

导航