[英]SQL Oracle Join query and get all records from today
我有這樣的查詢:
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
你能幫我為什么嗎?
在WHERE
子句中,您必須指定一些條件來過濾行。
例如:
WHERE trunc(start_date) = trunc(SYSDATE)
這里的start_date-表中的列, DATE
數據類型。
因此,您需要確定今天應該是哪一列。
順便說一句,您的加入條件也有些奇怪。 您產生笛卡爾聯接。 您確定這就是您想要的嗎?...
TRUNC(SYSDATE);
這是一個不完整的條件 。 WHERE子句用於根據條件過濾行。
WHERE table.column = TRUNC(SYSDATE)
另外,請注意datetime 。 在SYSDATE上使用TRUNC時,它將截斷時間部分 ,但是,如果日期列中有時間部分,它將與TRUNC(SYSDATE)不匹配。
您將需要在兩面都應用TRUNC 。
WHERE TRUNC(table.column) = TRUNC(SYSDATE)
但是從性能的角度來看 ,上述效果不是很好。 如果在日期列上有常規的B * Tree索引 ,由於TRUNC函數,它將被忽略 。
最好使用DATE RANGE CONDITION :
WHERE date_column
BETWEEN
TRUNC(SYSDATE)
AND
TRUNC(SYSDATE) +1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.