TO_DATE函数Oracle SQL

时间:2014-01-13 18:20:52

标签: sql oracle to-date

我正在尝试从范围中选择特定日期的数据,但不是在某组参数范围内。

目前:

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,但它看起来不像是批准的格式,甚至可能有任何东西可以借给我一只手很棒。

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

它认为你不能在BETWEEN:http://docs.oracle.com/cd/B28359_01/server.111/b28286/conditions011.htm#SQLRF52147

我没有可用的Oracle实例,或者我测试了它。我很确定它会起作用。