如何更改 oracle 查询的日期时间间隔?

How can I change day's time interval on oracle query?

我有这个查询并且工作正常。

select TO_CHAR(A.CREATE_DATE, 'DD') DAYs,TO_CHAR(A.CREATE_DATE, 'MM') MONTHS,
SUM(CASE WHEN TO_CHAR(A.RCPT_DTIME,'HH24') = 8 THEN 1 ELSE 0 END) AS TIME8,
SUM(CASE WHEN TO_CHAR(A.RCPT_DTIME,'HH24') = 7 THEN 1 ELSE 0 END) AS TIME7
                              
                              from PERSON A, HRM B
                              where  A.PERSON_ID = B.PERSON_ID                            
                              AND A.CREATE_DATE >= TO_DATE(:i_CREATE_DATE || '00','YYYYMMDDHH24MISS')
                              AND A.CREATE_DATE < TO_DATE(:i_CREATE_DATE || '00','YYYYMMDDHH24MISS')                                 
                              GROUP BY TO_CHAR(A.CREATE_DATE, 'DD'),TO_CHAR(A.RCPT_DTIME, 'MM')
                              ORDER BY MONTHS,DAYs

正常查询的时间从00:00开始到一天又一天的00:00。 但是我想将一天的时间范围设置为一天的 07:00am 和明天的 07:00am。我该怎么做?

您可以 TRUNC 日期然后加上 7 小时。例如,这将 select 今天早上 7 点和明天早上 7 点:

SELECT TRUNC(sysdate) + INTERVAL '7' HOUR, 
TRUNC(sysdate) + 1 + INTERVAL '7' HOUR FROM dual;

因此您可以在 where 子句中使用它,例如

SELECT columnselection FROM tableselection 
WHERE ...AND TRUNC(yourdate) + INTERVAL '7' HOUR <= datetocompare 
AND TRUNC(yourdate) + 1 + INTERVAL '7' HOUR >= datetocompare AND...

您也可以在比较日期时使用 BETWEEN 而不是 <= 和 >=,有些人认为这样更容易阅读。