Como subtrair datas no oracle db? [duplicado]

Jan 23 2021

Eu quero subtrair 2 datas (data atual e hairdressing_date) para obter o resultado da tabela para representar os dados durante os últimos 2 anos. Eu tenho a seguinte instrução SELECT:

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

É personalizado, mas não tenho certeza sobre a parte '/ 365' do código.

Como obter os dados necessários corretamente? Você poderia escrever a implementação correta desta linha?

Respostas

2 ThomasKirchhoff Jan 23 2021 at 03:05

Use a MONTHS_BETWEEN()função como esta:

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

e reverta para este considerando o seu caso:

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