0

我正在尝试从某个范围内选择某个日期的数据,但不在某个参数集中。

目前:

SELECT external_reporting_id AS asin,
       last_updated          AS "Received"
  FROM transfer_delivery_items
 WHERE last_updated >= TO_DATE(sysdate, 'DD-MON-YY') - 13
 ORDER BY last_updated DESC;

但我想查看不在该日期范围内的所有内容。
我已经尝试过>= TO_DATE(sysdate, 'DD-MON-YY')-13,但它看起来不像是一种认可的格式,或者如果有任何东西可以帮助我,那就太好了。

4

2 回答 2

1

sysdate 已经是一个日期,所以如果你想要 13 天前的所有内容,请执行以下操作:

select external_reporting_id ASIN, last_updated as "Received" 
  from transfer_delivery_items
 where last_updated >= trunc(sysdate) -13
 order by last_updated desc;

trunc(sysdate)将从日期中删除时间,以包含 13 天前的所有记录。

注意:我不会做

trunc(last_updated) >= trunc(sysdate) 

因为last_updaetd可能是一个索引列,并且trunc(last_update)会绕过该索引。(除非trunc(last_updated).

更新:

要获得提前 13 天且不超过未来 13 天的日期块,请执行以下操作:

select external_reporting_id ASIN, last_updated as "Received" 
  from transfer_delivery_items
 where last_updated >= trunc(sysdate) -13
   and last_updated <= trunc(sysdate) +13
 order by last_updated desc;
于 2014-01-14T13:29:00.977 回答
0

它认为您不能介于两者之间: http ://docs.oracle.com/cd/B28359_01/server.111/b28286/conditions011.htm#SQLRF52147

我没有可用的 Oracle 实例,否则我会对此进行测试。我很确定它会起作用。

于 2014-01-13T18:27:18.590 回答