我有一个表wchih有2列。该定义是基于SYSDATE获取列值
CREATE TABLE LOGGING_T
(
TSTAMP DATE,
LINE VARCHAR2(300)
)
TABLESPACE OPERATIONS
MONITORING
/
的colulmn TSTAMP有像30-NOV-11
,29-NOV-11
...等数值。现在我正在做这个查询
select * from LOGGING_T where TSTAMP >= (SYSDATE - 1)
当前系统日期是01-DEC-11
。理想情况下,上述声明应该返回记录TSTAMP = 30-NOV-11
,因为我在做SYSDATE-1
这将是30-NOV-11
。但它没有提取这些记录。为什么?
但是,如果我这样做查询
select * from LOGGING_T where TSTAMP >= (SYSDATE - 2)
然后取记录谁TSTAMP
是30-NOV-11
。我在这个简单的日期操作中做错了什么?
你可以省略掉'TRUNC(TSTAMP)的TRUNC'因为如果'TRUNC(TSTAMP)> = TRUNC(SYSDATE - 1)',它永远是真实的'TSTAMP> = TRUNC(SYSDATE - 1 )'(如果在TSTAMP上有索引,删除它可能会提高性能)。 –