获取数据' n' oracle两个日期之间的小时间隔

时间:2018-05-17 01:41:36

标签: oracle date plsql intervals

我正在尝试在“&n;”中的两个日期之间获取数据。小时间隔...问题是我在8小时的间隔后没有得到理想的结果...我的价值在' n'间隔可以达到1到120之间的任何数字。 以下是我想要做的伪代码:

- 我首先选择两个日期之间的小时数

 SELECT
24 * (SYSDATE - to_date('2018-04-16 15:20', 'YYYY-MM-DD hh24:mi')) AS diff_hours
FROM dual;

- 然后我在CONNECT BY ROWNUM< = ROUND((两个日期/ n之间的小时数),0)中使用上述值以n个间隔获取数据

  SELECT TRUNC(sysdate - (rownum/ROUND((24/n),0)),'HH24') as the_hour
        FROM dual
      CONNECT BY ROWNUM <= ROUND((hours between two dates/n),0) ;

示例查询

 SELECT
    24 * (SYSDATE - to_date('2018-04-16 15:20', 'YYYY-MM-DD hh24:mi')) AS diff_hours
FROM dual;
  SELECT TRUNC(sysdate - (rownum/ROUND((24/8),0)),'HH24') as the_hour
        FROM dual
      CONNECT BY ROWNUM <= ROUND((724/8),0) ;

如何更改上述查询以获取“&n;”中的数据?两个日期之间的小时间隔,n是任何小时数?

2 个答案:

答案 0 :(得分:0)

删除.Where(s => !string.IsNullOrEmpty(s))

中的第一个ROUND()
SELECT

答案 1 :(得分:0)

试试这个,

  SELECT TO_DATE(:p_date1, 'MM/DD/YYYY') + (FLOOR((rownum*:p_interval)/24) + (MOD((rownum*:p_interval), 24)/24)) dt
    FROM DUAL 
 CONNECT BY (rownum*:p_interval) <= ((TO_DATE(:p_date2, 'MM/DD/YYYY')+.5) - TO_DATE(:p_date1, 'MM/DD/YYYY') + (MOD((rownum*:p_interval), 24)/24)) * 24
   ORDER BY 1;