Как подставить даты в Oracle db? [дубликат]

Jan 23 2021

Я хочу выделить 2 даты (текущая дата и hairressing_date), чтобы получить результат из таблицы для представления данных за последние 2 года. У меня есть следующий оператор SELECT:

SELECT count(c_id) 
  INTO counter 
  FROM RESERVATIONS r
 WHERE r.customer_id = 1 
   AND (Sysdate - r.hairdressing_date) / 365 < 2;

Это обычай, но я не уверен насчет части кода «/ 365».

Как правильно получить нужные данные? Не могли бы вы написать правильную реализацию этой строчки?

Ответы

2 ThomasKirchhoff Jan 23 2021 at 03:05

Пожалуйста, используйте MONTHS_BETWEEN()такую ​​функцию:

SELECT MONTHS_BETWEEN(TRUNC(SYSDATE), TO_DATE('22.01.2019', 'DD.MM.YYYY'))/12 
  FROM DUAL;

и вернитесь к этому, учитывая ваш случай:

SELECT count(c_id) 
  INTO counter 
  FROM RESERVATIONS r     
 WHERE r.customer_id = 1 
   AND MONTHS_BETWEEN(TRUNC(SYSDATE), hairdressing_date)/12 < 2;