为什么这个日期比较where子句没有返回结果?

Ram*_*Ram 0 sql oracle

SELECT * FROM TABLE1
WHERE WEEKENDDT = (SELECT MAX(ENDDTE)FROM TABLE2)
Run Code Online (Sandbox Code Playgroud)

由于某种原因,此选择不返回数据.两个表都有特定日期的数据:MAX(ENDDTE)有02-MAY-12的数据,WEEKENDDT也有数据02-MAY-12.

Joã*_*lva 6

如果time部分date不同,就会发生这种情况.

例如,如果WEEKENDDTTable1具有值02-09-2012 18:47,和MAX(ENDDTE)Table2就是02-09-2012 00:00,它们是相等的,并且因此不能与进行比较=.

如果要截断time零件,只需使用TRUNC():

SELECT * FROM TABLE1
WHERE TRUNC(WEEKENDDT) = (SELECT TRUNC(MAX(ENDDTE)) FROM TABLE2)
Run Code Online (Sandbox Code Playgroud)

这是一个演示.