Oracle SQL查询以获取过去30天的数据?

Oracle SQL查询以获取过去30天的数据?,oracle,datetime,Oracle,Datetime,嗨,我是甲骨文的新手。我如何做一个简单的声明,例如从最近30天或20天的购买日期获取产品id SELECT productid FROM product WHERE purchase_date ? 在执行“购买日期>(sysdate-30)”时,请注意一个方面:“sysdate”是当前日期、小时、分钟和秒。所以“sysdate-30”并不完全是“30天前”,而是“30天前,此时此刻” 如果您的购买日期为00.00.00(小时、分钟、秒),则最好: where trunc(purchase_d

嗨,我是甲骨文的新手。我如何做一个简单的声明,例如从最近30天或20天的购买日期获取产品id

SELECT productid FROM product
WHERE purchase_date ? 

在执行“购买日期>(sysdate-30)”时,请注意一个方面:“sysdate”是当前日期、小时、分钟和秒。所以“sysdate-30”并不完全是“30天前”,而是“30天前,此时此刻”

如果您的购买日期为00.00.00(小时、分钟、秒),则最好:

where trunc(purchase_date)>trunc(sysdate-30)

(这不需要考虑小时、分钟和秒)。

最简单的方法是指定

从产品目录中选择productid 购买日期>系统日期-30

请记住,上面的sysdate包含时间组件,因此根据现在的时间,它将是比2011年6月3日上午8:54更新的采购订单

如果要在比较时删除时间成分

SELECT productid FROM product where purchase_date > trunc(sysdate-30);
并且(根据您的评论),如果您想指定特定日期,请确保使用to_date,而不是依赖默认会话参数。

从产品目录中选择productid 购买日期> 截止日期('2011年6月3日','mm/dd/yyyy')

并重新命名between(sysdate-30)-(sysdate)注释,对于订单,您应该可以只使用sysdate条件,除非您将来可以使用订单日期

从发布日期SELECT COUNT(job_id) FROM jobs WHERE posted_date < NOW()-30;

Now()
返回当前日期和时间。

尝试以下操作:使用此选项可以选择过去30天的数据

SELECT
    *
FROM
    product
WHERE
    purchase_date > DATE_SUB(CURDATE(), INTERVAL 1 MONTH)

那么“介于SYSDATE和SYSDATE-30之间”如何?或者如何手动指定日期?比如在“2011-3-3”和“2011-2-3”之间?@miracle
从购买日期介于“2011-02-03”、“YYYY-MM-DD”和“2011-03-03”、“YYYY-MM-DD”之间的产品中选择productid
@miracle:要回答这些问题,如果使用
介于
之间,请使用
介于SYSDATE-30和SYSDATE
之间(最早的优先)。要指定日期文字,请使用ANSI日期文字
date'2011-03-03'
或To_date函数,例如
To_date('03-03-2011','DD-MM-YYYY')
。。。。或者,如果您想了解所有这些,可以修改您的问题……“where purchase_date>trunc(sysdate-30)”也可以使用索引(如果存在索引,则可以使用索引)(而表达式很难优化)。
SELECT
    *
FROM
    product
WHERE
    purchase_date > DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
select status, timeplaced 
from orders 
where TIMEPLACED>'2017-06-12 00:00:00'