Oracle计算时间差表达式
--获取两时间的相差豪秒数
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
*/