SQL Query从过去30天获取数据?

时间:2011-03-06 13:39:54

标签: oracle datetime

您好我是Oracle新手。如何进行简单的声明,例如从最近30天或20天的购买日期获取产品ID?

SELECT productid FROM product
WHERE purchase_date ? 

6 个答案:

答案 0 :(得分:56)

SELECT productid FROM product WHERE purchase_date > sysdate-30

答案 1 :(得分:12)

最简单的方法是指定

  

SELECT productid FROM product where   purchase_date> SYSDATE-30;

请记住,上面的sysdate具有时间组件,因此它将是基于现在时间的03-06-2011 8:54 AM之前的采购订单。

如果你想在比较时删除时间分数..

SELECT productid FROM product where purchase_date > trunc(sysdate-30);

并且(根据您的评论),如果您想指定特定日期,请确保您使用to_date而不是依赖默认会话参数。

  

SELECT productid FROM product where   purchase_date>   TO_DATE('03 / 06 / 2011' , 'MM / DD / YYYY')

考虑到(sysdate-30) - (sysdate)注释,对于订单,你应该只在sysdate条件下使用,除非你将来可以订购order_dates。

答案 2 :(得分:7)

在执行“purchase_date>(sysdate-30)”时要注意一个方面:“sysdate”是当前日期,小时,分钟和秒。所以“sysdate-30”并不完全是“30天前”,而是“30天前的确切时间”。

如果您的购买日期为00.00.00小时,分钟,秒,则更好:

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

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

答案 3 :(得分:1)

SELECT COUNT(job_id) FROM jobs WHERE posted_date < NOW()-30;

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

答案 4 :(得分:1)

试试这个:使用此功能,您可以选择过去30天的数据

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

答案 5 :(得分:-1)

select status, timeplaced 
from orders 
where TIMEPLACED>'2017-06-12 00:00:00'