SQL-запрос для получения данных за последние 30 дней? - PullRequest
29 голосов
/ 06 марта 2011

Привет, я новичок в Oracle. Как мне сделать простое заявление, например, получить идентификатор продукта за последние 30 дней или 20 дней с даты покупки?

SELECT productid FROM product
WHERE purchase_date ? 

Ответы [ 6 ]

56 голосов
/ 06 марта 2011
SELECT productid FROM product WHERE purchase_date > sysdate-30
12 голосов
/ 06 марта 2011

Самый простой способ - указать

ВЫБРАТЬ продукт из продукта, где покупка_дата> sysdate-30;

Помните, что в приведенной выше sysdate есть временная составляющая, поэтому это будут заказы на покупку, более новые, чем 03-06-2011 8:54 AM, исходя из текущего времени.

Если вы хотите удалить временную составляющую при сравнении ..

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

И (основываясь на ваших комментариях), если вы хотите указать конкретную дату, убедитесь, что вы используете to_date и не полагаетесь на параметры сеанса по умолчанию.

ВЫБРАТЬ ПРОДУКТ ИЗ ПРОДУКТА, где покупка_дата> to_date ('03 / 06 / 2011' , 'мм / дд / гггг')

И что касается комментария между (sysdate-30) - (sysdate), для заказов вы должны быть в порядке с нами только в условии sysdate, если в будущем у вас не будет заказов с order_dates.

7 голосов
/ 06 марта 2011

Обратите внимание на один аспект при выполнении «purchase_date> (sysdate-30)»: «sysdate» - это текущая дата, часы, минуты и секунды. Таким образом, «sysdate-30» - это не «30 дней назад», а «30 дней назад в этот точный час».

Если ваши даты покупки имеют 00.00.00 в часах, минутах, секундах, лучше:

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

(это не учитывает часы, минуты и секунды).

1 голос
/ 08 августа 2016

Попробуйте: с помощью этого вы можете выбрать данные за последние 30 дней

SELECT
    *
FROM
    product
WHERE
    purchase_date > DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
1 голос
/ 04 января 2014
SELECT COUNT(job_id) FROM jobs WHERE posted_date < NOW()-30;

Now() возвращает текущие дату и время.

0 голосов
/ 16 июня 2017
select status, timeplaced 
from orders 
where TIMEPLACED>'2017-06-12 00:00:00' 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...