oracle - 获取时间范围之间的间隙

标签 oracle datetime plsql oracle11g

在我的数据库表(EMP_WORKS)的WORK_TIME列中,我有如下记录。

WORK_TIME

19:03:00
20:00:00
21:02:00
21:54:00
23:04:00
00:02:00

我想使用这些数据创建一个数据库 View 。为此,我需要获取这些时间之间的Gap,如下所示。

WORK_TIME  GAP

19:03:00  -
20:00:00  00:57:00  (Gap between 19:03:00 and 20:00:00)
21:02:00  01:02:00  (Gap between 20:00:00 and 21:02:00)
21:54:00  00:52:00  (Gap between 21:02:00 and 21:54:00)
23:04:00  01:10:00  (Gap between 21:54:00 and 23:04:00)
00:02:00  00:58:00  (Gap between 23:04:00 and 00:02:00)

我怎样才能做到这一点?

最佳答案

此查询将为您提供小时数差异:

SELECT
  work_time,
  ( work_time - LAG(work_time) OVER (ORDER BY work_time) ) * 24 AS gap
FROM emp_works

SQL Fiddle 上的示例返回此:

WORK_TIME                           GAP
November, 07 2012 19:03:00+0000     (null)
November, 07 2012 20:00:00+0000     0.95
November, 07 2012 21:02:00+0000     1.033333333333
November, 07 2012 21:54:00+0000     0.866666666667
November, 07 2012 23:04:00+0000     1.166666666667
November, 08 2012 00:02:00+0000     0.966666666667

关于oracle - 获取时间范围之间的间隙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13265468/

相关文章:

mysql - 当 Table2 中存在 if else 条件差异时,如何插入/追加到 Table1

python - "Server Error in '/' Application"由于 Oracle.ManagedDataAccess.Client.Oracle.Exception : ORA-20002: Procedure(CA_Clasic_Search)Error using Selenium

sql - 在 PL/SQL VARRAY 中使用 ROWTYPE 会产生编译错误

oracle - PL/SQL 的代码覆盖率

mysql - Django - MySQL 数据库日期时间字段被清除

python - 如何将 pandas 日期列与今天的日期进行比较?

Javascript处理不同时区的夏令时

java - XML 到字符串在一个数据库上工作正常,但在第二个数据库上工作不正常

sql-server - 将 SQL Server Apply 查询迁移到 Oracle

java - jdbc 连接已建立,但未在 eclipse 控制台中打印结果