sql - PLSQL 'IN' 运算符

标签 sql oracle plsql

我正在尝试根据以下 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 运算符以正确的方式处理此问题,或者我应该执行不同类型的嵌套查询?

最佳答案

使用truncsysdate截断时间组件

SELECT * FROM NEM_RM16
WHERE NEM_RM16.DAY IN (
  SELECT trunc(SYSDATE)-(level*7) as DateRange
  FROM DUAL
  CONNECT BY LEVEL <=10);

关于sql - PLSQL 'IN' 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10733892/

相关文章:

php - 使用 PHP 计算 MySQL 中多个日期条目之间的周数

mysql - 如何从两个外键制作复合 Material ? MySQL

sql - Oracle - 如何使varchar类型的自动增量列?

oracle - 顶点 : Download BLOB from temporary table

sql - PL/SQL 甲骨文 : Trigger updates on delete

mysql - mysql中未知行数的时间差之和

sql - 在 INSERT ("missing FROM-clause entry"上使用 WITH 时出现问题)

Oracle SYS_GUID 不会改变

oracle - 如何使用 liquibase 在线创建索引?

sql - 我怎样才能摆脱动态SQL