ORACLE 获取时间差值的sql怎么写?

有两个字段a,b 都是字符型的,a,b中数据的样式都是这样的:Y2009M04D03H16I30S24 (其实就是2009-04-03 16:30:24)
我要求这两个字段的时间差该怎么写?单位要分钟
这么直接转好像行不通吧,是不需要对字段a,b做下形式上的处理

oracle的日期类型相减得到的是天,如果你需要得到分钟,可以这样:
(date1 - date2)*24*60
如果你的字段是字符串,先转换成日期date类型:
(to_date(a,'yyyy-mm-dd hh24:mi:ss') - to_date(b,'yyyy-mm-dd hh24:mi:ss'))*24*60
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-30
--两个时间相减得到的结果是天,如果要取小时则将结果集乘24,取分再乘60,取秒再乘60.....
select to_date('2016-01-05 18:30:00','yyyy-mm-dd hh:24:mi') - to_date('2016-01-05 10:30:00','yyyy-mm-dd hh:24:mi') from dual;
select (to_date('2016-01-05 11:30:20','yyyy-mm-dd hh:24:mi') - to_date('2016-01-05 10:30:00','yyyy-mm-dd hh:24:mi'))*24*60*60 from dual;