我正在使用Oracle SQL开发人员从数据库中选择数据。但是当我在WHERE子句中使用以下内容时,我得到了不同的结果:
date_column=trunc(sysdate)
结果与trunc(date_column)=trunc(sydate)
。此外,即使表中有相应的数据,date_column = sysdate
也不返回任何行。
答案 0 :(得分:4)
烨。在Oracle中,date
数据类型有点误导,因为它有一个时间组件。所以:
date_column = trunc(sysdate)
返回date_column
正好在午夜过后的行。
trunc(date_column) = trunc(sysdate)
返回今天发生的任何事情。
date_column = sysdate
仅在时间组件匹配时才有效,这种情况极不可能。
我经常把逻辑写成:
date_column >= trunc(sysdate) and date_column < trunc(sysdate + 1)
此方法可确保date_column
上的索引可用于过滤。