Oracleデータベースで日付をサブスクライブする方法は?[複製]

Jan 23 2021

2つの日付(現在の日付とhairdressing_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;