Come sottostrutturare i datteri in Oracle DB? [duplicare]

Jan 23 2021

Voglio sottostruire 2 date (data corrente e data_hairressing) per ottenere il risultato dalla tabella per rappresentare i dati degli ultimi 2 anni. Ho la seguente istruzione SELECT:

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

È personalizzato, ma non sono sicuro della parte "/ 365" del codice.

Come ottenere correttamente i dati necessari? Potresti scrivere la corretta implementazione di questa riga?

Risposte

2 ThomasKirchhoff Jan 23 2021 at 03:05

Si prega di utilizzare una MONTHS_BETWEEN()funzione come questa:

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

e torna a questo considerando il tuo caso:

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