如何更改 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
而不是 <= 和 >=,有些人认为这样更容易阅读。
我有这个查询并且工作正常。
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
而不是 <= 和 >=,有些人认为这样更容易阅读。