Oracle SQL:子句其中:date_column = trunc(sysdate)结果与trunc不同(date_column)= trunc(sydate)

时间:2018-01-22 14:51:41

标签: sql oracle

我正在使用Oracle SQL开发人员从数据库中选择数据。但是当我在WHERE子句中使用以下内容时,我得到了不同的结果:

  • date_column=trunc(sysdate)结果与
  • 不同
  • trunc(date_column)=trunc(sydate)

此外,即使表中有相应的数据,date_column = sysdate也不返回任何行。

1 个答案:

答案 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上的索引可用于过滤。