我正在尝试在“&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是任何小时数?
答案 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;