【发布时间】:2012-05-24 19:02:16
【问题描述】:
我正在尝试根据以下 PLSQL 查询确定的“日期”范围选择行,该查询当前提供了我需要的结果 - 作为一周中最后 10 周的“日期”对象脚本运行时。例如。在 5 月 22 日运行它会产生 5 月 15 日、5 月 8 日等等。
SELECT SYSDATE-(level*7) as DateRange
FROM DUAL
CONNECT BY LEVEL <=10
这会生成日期列表。然后我尝试将它与父 select 语句结合起来,以获取上面输出的日期在“DAY”(Oracle 类型 DATE)列中的行。
SELECT * FROM NEM_RM16
WHERE NEM_RM16.DAY IN (
SELECT SYSDATE-(level*7) as DateRange
FROM DUAL
CONNECT BY LEVEL <=10);
尽管知道有行具有上述生成的日期,但它没有给出任何结果。
我读过,在使用“IN”运算符时,值必须用单引号括起来,但我不确定如何使用上面的查询来做到这一点。
我是通过使用 IN 运算符以正确的方式解决这个问题,还是应该执行不同类型的嵌套查询?
【问题讨论】:
-
sysdate返回日期和时间。您确定只选择与当前时间相同的那些记录吗?您在 NEM_RM16.DAY 中存储了什么?只有日期没有时间? -
您的问题是关于SQL
IN运算符,与PL/SQL 无关。