sql - 带有子查询的 SQL 间隔
问题描述
我想过滤某个日期的旧记录,但此 SQL 不起作用:
SELECT *
FROM TABLE1
WHERE UPDATED_ON + INTERVAL (SELECT B.DAYS FROM B.TABLE2
WHERE B.NAME = 'Tmp') DAY < SYSDATE;
但是这个 SQL 是有效的,因为在 '' 中有常量 2。我如何使用子查询而不是常量来做到这一点?
SELECT *
FROM TABLE1
WHERE UPDATED_ON + INTERVAL '2' DAY < SYSDATE;
解决方案
要么使用
WHERE
UPDATED_ON
+ (SELECT B.DAYS FROM B.TABLE2 WHERE B.NAME = 'Tmp') * INTERVAL '1' DAY < SYSTIMESTAMP
或者
WHERE
UPDATED_ON
+ NUMTODSINTERVAL((SELECT B.DAYS FROM B.TABLE2 WHERE B.NAME = 'Tmp'), 'day') < SYSTIMESTAMP
或者
WHERE
UPDATED_ON
+ (SELECT B.DAYS FROM B.TABLE2 WHERE B.NAME = 'Tmp') < SYSDATE
推荐阅读
- discord - BetterDiscord:如何制作插件?
- java - java xml 参数在 CentOS 7.6 中似乎不起作用,如何限制 java 11 进程内存
- gitlab - gitlab 转移到新服务器而不创建备份
- python - 从 STEP 文件中提取体积
- python - PyCharm 中缺少 R 解释器
- javascript - 如何使用javascript以所有六种可能的方式将三个数字除以另外三个数字
- c# - 否定浮点变量的不同方法生成不同的程序集
- c# - c# 检查列表是否包含空元素并且不在 for 语句中列出整行
- python - 从 numpy 数组创建数据框
- python - Python文件检查中断每个循环?