我有这样的查询:
SELECT contact.PUBID,
contact.LASTNAME,
contact.FIRSTNAME,
contact.MIDDLENAME,
contact.CELLPHONE,
doc.PUBID,
doc.ISSUER,
doc.ISSUEDATE,
doc.SERIES,
doc.DOCNUMBER
FROM CONTACT contact
INNER JOIN DOCUMENT doc
ON contact.PUBLICID = 'ab12'
WHERE TRUNC(SYSDATE);
我想从今天开始收到所有记录但有错误:
ORA-00920: wrong relational operator
00920. 00000 - "invalid relational operator"
*Cause:
*Action:
Error at Line: 3 Column: 143
你能帮帮我吗?
答案 0 :(得分:1)
在WHERE
子句中,您必须为过滤行指定一些条件。
例如:
WHERE trunc(start_date) = trunc(SYSDATE)
此处为start_date - 表格中的列,DATE
数据类型。
所以你需要决定今天应该是哪一列。
顺便说一句,你的加入条件也有点奇怪。你生产笛卡尔联合。你确定这是你想要的吗?......
答案 1 :(得分:0)
WHERE TRUNC(SYSDATE);
这是一个不完整的条件。 WHERE子句用于根据条件过滤行。
WHERE table.column = TRUNC(SYSDATE)
另外,请注意日期时间。当您在SYSDATE上使用TRUNC时,它会截断时间部分,但是,如果您的日期列中有时间部分,则它与 TRUNC(SYSDATE)不匹配
您需要在双方都应用 TRUNC 。
WHERE TRUNC(table.column) = TRUNC(SYSDATE)
但从性能观点来看,上述情况并不好。如果您在日期列上有常规 B *树索引,则由于 TRUNC 功能,它将忽略。
最好使用 DATE RANGE CONDITION :
WHERE date_column
BETWEEN
TRUNC(SYSDATE)
AND
TRUNC(SYSDATE) +1