SQL Query для получения данных за последние 30 дней?

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

SELECT productid FROM product
WHERE purchase_date ? 

Ответ 1

SELECT productid FROM product WHERE purchase_date > sysdate-30

Ответ 2

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

SELECT productid FROM product, где buy_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, где buy_date > to_date ('03/06/2011', 'мм/дд/гггг')

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

Ответ 3

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

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

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

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

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

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