Làm thế nào để cấu trúc ngày trong oracle db? [bản sao]

Jan 23 2021

Tôi muốn cấu trúc lại 2 ngày (ngày hiện tại và ngày làm tóc) để lấy kết quả từ bảng để đại diện cho dữ liệu trong 2 năm qua. Tôi có câu lệnh SELECT sau:

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

Nó là tùy chỉnh, nhưng tôi không chắc chắn về phần '/ 365' của mã.

Làm thế nào để lấy dữ liệu cần thiết một cách chính xác? Bạn có thể viết cách triển khai chính xác của dòng này không?

Trả lời

2 ThomasKirchhoff Jan 23 2021 at 03:05

Vui lòng sử dụng MONTHS_BETWEEN()chức năng như thế này:

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

và hoàn nguyên về cái này xem xét trường hợp của bạn:

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