sql - 如何在oracle中减去2个日期以获得小时和分钟的结果

标签 sql oracle date-arithmetic

我想减去 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/

相关文章:

SQL (postgresql) 使用连接表中数据的间隔更新日期列

perl - 在Perl中推荐的日期算术方法是什么?

sql - 将 TIME 插入 Oracle SQL、DATE 字段

mysql - 什么命令可以查看表之间的关系?

php - Mysql 查询从 3 个 IDS 获取 3 个名称

mysql - 更新行中具有不同值的列

sql-server - Oracle 的 SSMS 模拟是什么?

java - 两个日期之间的差异 (Android)

sql - 从特定月份的表中删除数据

mysql - 如何按任意关键字排序?