Привет, я новичок в Oracle. Как сделать простой оператор, например, получить идентификатор продукта за последние 30 или 20 дней покупки?
SELECT productid FROM product
WHERE purchase_date ?
Привет, я новичок в Oracle. Как сделать простой оператор, например, получить идентификатор продукта за последние 30 или 20 дней покупки?
SELECT productid FROM product
WHERE purchase_date ?
SELECT productid FROM product WHERE purchase_date > sysdate-30
Самый простой способ - указать
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 в будущем.
Обратите внимание на один аспект при выполнении "purchase_date > (sysdate-30)": "sysdate" - текущая дата, час, минута и секунда. Так что "sysdate-30" не совсем "30 дней назад", но "30 дней назад в этот час".
Если ваши даты покупки имеют 00.00.00 в часах, минутах, секундах, лучше делать:
where trunc(purchase_date)>trunc(sysdate-30)
(это не учитывает часы, минуты и секунды).
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)
select status, timeplaced
from orders
where TIMEPLACED>'2017-06-12 00:00:00'