2012-09-02 63 views
0
SELECT * FROM TABLE1 
WHERE WEEKENDDT = (SELECT MAX(ENDDTE)FROM TABLE2) 

此選擇由於某種原因不返回數據。兩個表格都有特定日期的數據: MAX(ENDDTE)具有02-MAY-12的數據,WEEKENDDT -15具有數據02-MAY-12。爲什麼這個日期比較where子句返回沒有結果?

+5

日期有一個時間組件。你正在比較的兩個值是完全相同的嗎?我的猜測是他們不是。 – Ben

+0

檢查這兩個列的數據類型是否有'datetime' –

+2

'datetime'不是Oracle數據類型。 – eaolson

回答

6

如果datetime部分不同,可能會發生這種情況。

例如,如果在WEEKENDDTTable1具有值02-09-2012 18:47,和Table2MAX(ENDDTE)02-09-2012 00:00,它們相等,並且因此不能與=進行比較。

如果你要截斷time部分,只需使用TRUNC()

SELECT * FROM TABLE1 
WHERE TRUNC(WEEKENDDT) = (SELECT TRUNC(MAX(ENDDTE)) FROM TABLE2) 

這裏有一個DEMO

+1

酷!我不知道SQL小提琴。 –

相關問題