sql - 在请求 oracle 中按日期选择(之间)
问题描述
我编写了一个在 apex oracle 中使用的查询,在其中添加了过滤器,但是当我添加日期选择时,此查询不起作用(尽管没有语法错误)。我会很感激你的帮助
select eb.ID,
eb.NAME,
eb.TEMP,
eb.ID_TRANS,
eb.CR_DATE,
eb.DATE_TMRT,
ah.name as Silo_name,
we.name as ORGANIZATIONS,
ad.name as item
from TEMPR_SILO eb
left join ORGANIZATIONS we on eb.ORGANIZATIONS = we.id
left join ITEM_CRITICALTEMP ad on ad.id <> 0
left join silo ah on ah.id = ad.id_silo
where (:P115_ORG is null or we.name = :P115_ORG)
and (:P115_SILO_NAME is null or ah.name = :P115_SILO_NAME)
and to_timestamp(eb.DATE_TMRT) between to_timestamp(:P115_DATA1,'dd.mm.yyyy') and to_timestamp(:P115_DATA2,'dd.mm.yyyy')
------ when "OR" is missing then everything works ---
or (:P115_DATA2 is null OR :P115_DATA1 is null)
group by
eb.ID,
eb.NAME,
eb.TEMP,
eb.ID_TRANS,
eb.CR_DATE,
eb.DATE_TMRT,
we.name,
ah.name,
ad.name
但是可能没有指定过滤日期,我需要所有记录都可用,因此应该是“OP”。如果您能帮我找出错误,我将不胜感激!
解决方案
我想应该是
where
( --> this
(:P115_ORG is null or we.name = :P115_ORG)
and (:P115_SILO_NAME is null or ah.name = :P115_SILO_NAME)
and to_timestamp(eb.DATE_TMRT) between to_timestamp(:P115_DATA1,'dd.mm.yyyy')
and to_timestamp(:P115_DATA2,'dd.mm.yyyy')
) --> this
--
or (:P115_DATA2 is null OR :P115_DATA1 is null)
即,将所有AND
条件括在自己的括号中,并将OR
条件排除在外。
推荐阅读
- python - 刮 Naukri
- tensorflow2.0 - 错误:模块“tensorflow.python.framework.ops”没有属性“_TensorLike”
- html - 在换行符之前选择一个元素
- php - 带有 nginx 的 Laravel 返回内部服务器错误
- c++ - 为什么即使不涉及签名类型,std::push_heap 也会生成 -Wstrict-overflow=3 警告?
- sql - 根据另一列中的值拆分列中的数据
- json - 使用 tkinter 文本框编辑 JSON 文件
- python - inkex.py TypeError: write() 参数必须是 str,而不是字节
- excel - 如何在 Excel for Mac OSX 上发出 HTTP 请求(查询 json 数据/API)
- php - 与令牌数不匹配 - 查询:SELECT COUNT(event) FROM qa_eventlog WHERE datetime >= FROM_UNIXTIME(?) AND