我想减去 2 个日期,并以一位小数表示以小时和分钟为单位的结果。
我有下表,我正在这样做,但结果并不理想。
有一些细微的变化,我确定这是简单的算术,但我没有做对。
select start_time, end_time, (end_time-start_time)*24 from
come_leav;
START_TIME END_TIME (END_TIME-START_TIME)*24
------------------- ------------------- ------------ ------------
21-06-2011 14:00:00 21-06-2011 16:55:00 2.9166667
21-06-2011 07:00:00 21-06-2011 16:50:00 9.8333333
21-06-2011 07:20:00 21-06-2011 16:30:00 9.1666667
我想要结果 (end_time-start_time) 如下。
16:55- 14:00 = 2.55
16:50-07:00 = 9.5
16:30-7:20 = 9.1 等等。
我怎样才能做到这一点?
最佳答案
SQL> edit
Wrote file afiedt.buf
1 select start_date
2 , end_date
3 , (24 * extract(day from (end_date - start_date) day(9) to second))
4 + extract(hour from (end_date - start_date) day(9) to second)
5 + ((1/100) * extract(minute from (end_date - start_date) day(9) to second)) as "HOUR.MINUTE"
6* from t
SQL> /
START_DATE END_DATE HOUR.MINUTE
------------------- ------------------- -----------
21-06-2011 14:00:00 21-06-2011 16:55:00 2.55
21-06-2011 07:00:00 21-06-2011 16:50:00 9.5
21-06-2011 07:20:00 21-06-2011 16:30:00 9.1
对于那些遇到此代码的人应该注意的是,小数部分是实际的分钟差异,而不是一小时的一部分。
.5
,因此,代表 50 minutes
,不是 30 minutes
.
关于sql - 如何在oracle中减去2个日期以获得小时和分钟的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7460266/