我有一个oracle查询,用于获取2021年6月11日至2021年6日16日(每天(下午12点至凌晨12点之间的值。我下面的查询将收集11日至15日的信息,但不会获得16日的数据。我还有其他办法解决这个问题吗?非常感谢您抽出时间
SELECT TO_CHAR(datadate, 'dd/mm/yyyy') ,
ROUND(AVG(BATTERYVOLTAGE),2) AVGVOLTAGE
FROM MYTABLE
WHERE BATTERYVOLTAGE!= 0
AND to_char(datadate, 'hh24:mi:ss') BETWEEN '12:00:00' and '24:00:00'
AND DATADATE BETWEEN TO_DATE('11/06/2021', 'dd/mm/yyyy')
AND TO_DATE('16/06/2021', 'dd/mm/yyyy')
GROUP BY TO_CHAR(datadate, 'dd/mm/yyyy')
ORDER BY 1
datadate BETWEEN to_date('11/06/2021', 'dd/mm/yyyy')
AND to_date('16/06/2021', 'dd/mm/yyyy')
如果在2021-06-16 00:00:00之前或之后,则仅包括CCD_ 1所在的行。不包括2021-06-16 00:00:00之后的所有内容。
这是一个常见的错误。不要将BETWEEN
用于此类事情。请改用具有>=
和<
的范围。
datadate >= to_date('2021-06-11 12:00:00', 'YYYY-MM-DD HH24:MI:SS')
AND datadate < to_date('2021-06-17 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
如果有人想知道如何做到这一点。
更改上次日期的格式。
DATADATE BETWEEN TO_DATE('12/06/2021', 'dd/mm/yyyy') AND (TO_DATE('22/06/2021', 'dd/mm/yyyy')+(1-1/24/60/60))
了解更多信息https://asktom.oracle.com/pls/apex/asktom.search?tag=date-在之间使用的查询
您在尝试查询日期和时间分隔时会遇到问题;如果您加入日期和时间并搜索日期时间值,如to_date('2021-06-11 09:00:00','YYYY-MM-DD HH24:MI:SS'(,则会更容易,您将得到的范围是从9开始的限制