"BETWEEN OPERATOR" IN ORACLE 未包含最后日期的数据
Data for the last date not included by the "BETWEEN OPERATOR" IN ORACLE
我有一个 oracle 查询,用于获取从日期 11/06/2021 到 16/06/2021 中午 2 点到凌晨 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')
仅包括 datadate
如果在 2021-06-16 00:00:00 之前或之时的行。不包括 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')
您将有问题尝试将查询日期和时间分开;如果您加入日期和时间并搜索 to_date('2021-06-11 09:00:00','YYYY-MM-DD HH24:MI:SS') 之类的日期时间值,您将获得的范围从 9 开始会更容易限制你想要的
如果有人想知道怎么做。
更改最后日期的格式。
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-queries-using-between
我有一个 oracle 查询,用于获取从日期 11/06/2021 到 16/06/2021 中午 2 点到凌晨 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')
仅包括 datadate
如果在 2021-06-16 00:00:00 之前或之时的行。不包括 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')
您将有问题尝试将查询日期和时间分开;如果您加入日期和时间并搜索 to_date('2021-06-11 09:00:00','YYYY-MM-DD HH24:MI:SS') 之类的日期时间值,您将获得的范围从 9 开始会更容易限制你想要的
如果有人想知道怎么做。
更改最后日期的格式。
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-queries-using-between