我正在尝试使用以下查询查找从当前日期起1至4天范围内已关闭并且运气不佳的工作单。
SELECT B.ITEMNO,
B.DESCRIP2
FROM HIST_ILLUM_RT A,
HIST_ILLUM_PART B
WHERE A.TEAR_DOWN_TIME <= SYSDATE -1 AND A.TEAR_DOWN_TIME >= SYSDATE -4
该查询似乎正在关闭所有工作单。 TEAR_DOWN_TIME字段的格式为MM / DD / YYYY HH / MM / SS
感谢您的帮助。预先感谢!
答案 0 :(得分:1)
范围通常具有“大于x且小于y”的形式
您使用了“少于”两次
你是说
A.TEAR_DOWN_TIME >= SYSDATE -4
其他注意事项:
答案 1 :(得分:0)
您需要将列转换为日期:
WHERE TO_DATE(A.TEAR_DOWN_TIME, 'MM/DD/YYYY HH24/MI/SS') <= SYSDATE - 1 AND
TO_DATE(A.TEAR_DOWN_TIME, 'MM/DD/YYYY HH24/MI/SS') >= SYSDATE - 4
您的逻辑正在进行字符串比较。道德?使用正确的数据类型存储数据。
答案 2 :(得分:0)
通过使用ANSI连接(如Caius Jard所述),并假设表的主键都是ID
,请尝试以下代码:
SELECT B.ITEMNO, B.DESCRIP2
FROM HIST_ILLUM_RT A
JOIN HIST_ILLUM_PART B ON A.ID=B.ID
WHERE A.TEAR_DOWN_TIME <= SYSDATE-1 AND A.TEAR_DOWN_TIME >= SYSDATE-4;
请注意:我将亲自重写 where 子句,使TEAR_DOWN_TIME
位于边界日期之间,以便于阅读,例如:
WHERE SYSDATE-4 <= A.TEAR_DOWN_TIME and A.TEAR_DOWN_TIME <= SYSDATE-1