sql - 在 Oracle 中生成具有 2 个日期之间的时间间隔的行

标签 sql oracle oracle-apex

我有一个表格,其中给出了周日到周六的“医生开始时间”和“结束时间”。 我想创建 15 分钟的时间段。

在此基础上,患者点击显示已预订时段的日历日期时间间隔。

enter image description here

最佳答案

以下示例展示了如何将时间拆分为 15 分钟的片段。它使用分层查询。一点解释:

  • 第 2 行:应用于日期值的 trunc 函数返回当天(午夜)的“开始”。添加 15/(24*60) 会增加 15 分钟(因为一天有 24 小时,一小时有 60 分钟)。将 15 乘以 level 相当于一个“循环”,即将 15×15×15 ... 分钟加到之前的值上。
  • 第 4 行:与第 2 行类似,但它确保将一天(24 小时 * 60 分钟)划分为 15 分钟部分
  • 第 6 行:开始时间很简单
  • 第 7 行:结束时间将 start_time 加 15 分钟
  • 第 9 行:仅返回 10 到 16 小时之间的时间(凌晨 02:15 没有病人,对吧?)

SQL> with fifteen as
  2    (select trunc(sysdate) + (level * 15)/(24*60) c_time
  3     from dual
  4     connect by level <= (24*60) / 15
  5    )
  6  select to_char(c_time, 'hh24:mi') start_time,
  7         to_char(c_time + 15 / (24 * 60), 'hh24:mi') end_time
  8  from fifteen
  9  where extract(hour from cast (c_time as timestamp)) between 10 and 15;

START_TIME END_TIME
---------- ----------
10:00      10:15
10:15      10:30
10:30      10:45
10:45      11:00
11:00      11:15
11:15      11:30
11:30      11:45
11:45      12:00
12:00      12:15
12:15      12:30
12:30      12:45
12:45      13:00
13:00      13:15
13:15      13:30
13:30      13:45
13:45      14:00
14:00      14:15
14:15      14:30
14:30      14:45
14:45      15:00
15:00      15:15
15:15      15:30
15:30      15:45
15:45      16:00

24 rows selected.

SQL>

关于sql - 在 Oracle 中生成具有 2 个日期之间的时间间隔的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50981401/

相关文章:

javascript - 如何循环这个 PL/SQL 语句,以便它在我的 Google map 上绘制多个标记?

mysql - 基于 MySQL 中的另一列创建计算列

sql - 如何将 WITHIN GROUP 从 Oracle 翻译成 Postgres?

oracle - 如何从 Oracle APEX/SQL Workshop 导出完整的数据模型?

oracle - 我可以编写一个行为类似于 REGEXP_LIKE 的函数,即其结果类型表现为 bool 值吗?

sql - 带有绑定(bind)变量的 Oracle SQL 跟踪

HTML 表格溢出不起作用

MySQL 用同一个表中另一个字段的查询结果填充一个新字段

sql - 在 PowerShell 中转义包含单引号的字符串,为 SQL 查询做好准备

mysql - 对 TableA 和 TableB 的 SELECT 查询 IF TableB.col 值(0 或 1) 我为 0 和 1 创建新列