oracle 选择查询以获取最近 30 天的记录,不带时间戳,不应使用 trunc

oracle select query to fetch records of last 30 days without timestamp and no trunc should be used

oracle select查询获取最近30天没有时间戳的记录,不应该使用trunc函数

1
select * from table where enterdate between today date and last 30 day before

我用过 select sysdate,(sysdate-30) from dual;

但时间戳正在考虑中,但我只想考虑日期

如果我使用 trunc((sysdate)-30)-6) ,这个 trunc 函数会在执行过程中降低性能以获取更多记录

因此使用索引


1
select * from table where enterdate between TRUNC(SYSDATE-30) and TRUNC(SYSDATE) ;

对表列的任何函数调用都可能造成影响(除非基于函数的索引超过它),但不会对值造成影响。现在,当我们执行 TRUNC(sysdate) 时,这只发生一次并且涉及的成本可以忽略不计,因为它不适用于 Column.

TRUNC(sysdate) 将使当前时间的 TIME 元素无效将 '00:00:00' 。所以 BETWEEN 操作是完美的!并且您的 INDEX\\ 的范围扫描将会发生