Jak oddzielić daty w bazie danych Oracle? [duplikować]

Jan 23 2021

Chcę oddzielić 2 daty (data bieżąca i data_robienia fryzury), aby uzyskać wynik z tabeli w celu przedstawienia danych z ostatnich 2 lat. Mam następującą instrukcję SELECT:

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

Jest to niestandardowe, ale nie jestem pewien co do części kodu „/ 365”.

Jak poprawnie uzyskać potrzebne dane? Czy mógłbyś napisać poprawną implementację tej linii?

Odpowiedzi

2 ThomasKirchhoff Jan 23 2021 at 03:05

Użyj MONTHS_BETWEEN()funkcji takiej jak ta:

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

i wróć do tego, biorąc pod uwagę twój przypadek:

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