【发布时间】:2014-02-01 15:00:55
【问题描述】:
我正在尝试从某个范围内选择某个日期的数据,但不在某个参数集中。
目前:
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,但它看起来不像是经过批准的格式,或者如果有什么可以帮助我的话,甚至是可能的会很棒的。
【问题讨论】:
-
to_date()将 string 转换为 date。sysdateis 已经是约会对象了。因此,将to_date()应用于date值将convert应用于date值是完全没用的。实际上更糟:因为这种方式date值sysdate首先被转换为字符串值(受隐式 NLS 设置的影响),然后再次转换回date。 -
我的印象是我必须转换为日期格式。当我删除 sysdate 时,我收到错误,当我删除 sysdate 和“DD-MON-YYYY”时,我收到错误。所以,我一直在这个数据库上使用它们。
-
A
date没有“格式”。所以没有必要“转换”它。在您的情况下,last_updated >= sysdate - 13应该可以正常工作。可能最好使用trunc(last_updated) >= trunc(sysdate) - 14来忽略date值的时间部分。 -
明白了,谢谢!解决了这个问题。
-
这行得通吗?
从 transfer_delivery_items 中选择 external_reporting_id ASIN,last_updated 为“已接收”,其中 last_updated = trunc(sysdate)+13 order by last_updated描述;