WHERE条件中OR子句查询日期数据无法正确获取问题求助
问题排查点
- 缺失关联表:当前查询
FROM子句仅声明了RT_TRANSAPORT表(别名RT),但WHERE条件中使用了别名FU的字段,FU对应的表没有通过JOIN语句引入,会直接触发SQL语法错误。 - 日期匹配逻辑缺陷:如果你的日期字段包含时分秒,
BETWEEN TO_DATE('08/11/2021','dd/mm/yyyy') AND TO_DATE('08/11/2021','dd/mm/yyyy')实际仅能匹配到2021年11月8日00:00:00的记录,当天其他时间段的数据会全部被过滤。 - 疑似拼写错误:表名
RT_TRANSAPORT疑似拼写错误,标准拼写应为RT_TRANSPORT,如果实际表名是后者也会触发表不存在的报错。 - 条件逻辑不符需求:你提到需要符合三个不同日期条件,但当前写了4个
OR拼接的日期条件,需确认是否多写了过滤规则。
修正后参考SQL
SELECT tr_name FROM RT_TRANSPORT RT -- 补充FU表的关联逻辑,此处用LEFT JOIN举例,根据实际需求调整JOIN类型和关联条件 LEFT JOIN 你对应的FU表名 FU ON RT.关联字段 = FU.关联字段 WHERE TRUNC(RT.TR_DATE) = TO_DATE('08/11/2021','dd/mm/yyyy') OR TRUNC(RT.KM_DATE) = TO_DATE('08/11/2021','dd/mm/yyyy') OR TRUNC(FU.TY_DATE) = TO_DATE('08/11/2021','dd/mm/yyyy') -- 如果确实只需要三个条件,删除多余的第四个条件即可 OR TRUNC(FU.AT_DATE) = TO_DATE('08/11/2021','dd/mm/yyyy')
如果不想用TRUNC函数(避免字段上的索引失效),也可以把日期范围改成BETWEEN TO_DATE('08/11/2021','dd/mm/yyyy') AND TO_DATE('09/11/2021','dd/mm/yyyy') - 1/86400,覆盖当天全部时分秒的记录。
内容的提问来源于stack exchange,提问作者Shah
相关产品推荐
相关产品推荐

