Функция DateAdd в Oracle SQL

#sql #sql-server #oracle

#sql #sql-сервер #Oracle

Вопрос:

Как я могу преобразовать DATEADD(week,-4,GETDATE()) в предложении where (в Oracle SQL)

Пытаюсь получить данные за предыдущие 4 недели

 SELECT DISTINCT LOWER(C.EMAIL) AS EMAIL, FOI.ORDER_ID AS ORDERS
  FROM MTEPWDATA_CAN.MTEP_FACT_ORDER_ITEMS FOI
  LEFT JOIN MTEPWDATA_CAN.MTEP_DIM_DAY D
    ON FOI.ORDER_DATE_SKEY = D.DAY_SKEY
  LEFT JOIN MTEPWDATA_CAN.MTEP_DIM_CUSTOMER C
    ON FOI.CUSTOMER_SKEY = C.CUSTOMER_SKEY
 WHERE ((QUANTITY_ORDERED > 0 
   AND FOI.FULFILLMENT_TYPE = 'SCHEDULED_HOME'))
   AND DATEADD(week, -4, GETDATE())
  

Ответ №1:

В Oracle вы бы использовали:

 select sysdate - interval '28' day
  

Или, если вы предпочитаете:

 select sysdate - 4 * interval '7' day
  

Комментарии:

1. Могу ли я использовать то же самое в предложении where?

2. @Maddy . . . Да . . . при условии, что вы включаете соответствующее сравнение.

3. Я попробовал это в приведенном ниже запросе, и это почему-то не работает. Не могли бы вы, пожалуйста, помочь мне с этим?

4. ВЫБЕРИТЕ ОТДЕЛЬНЫЙ НИЖНИЙ (C.EMAIL) В КАЧЕСТВЕ электронной почты, FOI. ИДЕНТИФИКАТОР ЗАКАЗА КАК ЗАКАЗЫ ИЗ MTEPWDATA_CAN.MTEP_FACT_ORDER_ITEMS ДЛЯ ЛЕВОГО ВНЕШНЕГО СОЕДИНЕНИЯ MTEPWDATA_CAN.MTEP_DIM_DAY D На FOI. ORDER_DATE_SKEY = D.DAY_SKEY ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ MTEPWDATA_CAN.MTEP_DIM_CUSTOMER C На FOI.CUSTOMER_SKEY = C.CUSTOMER_SKEY ГДЕ ( ( QUANTITY_ORDERED> 0 И FOI.FULFILLMENT_TYPE=’SCHEDULED_HOME’ ) ) И DATEADD(неделя,-4, GETDATE())

5. @Maddy . . . Как я уже сказал, вам нужно соответствующее сравнение для даты. Выражение просто возвращает дату.