วิธีการสร้างวันที่ใน Oracle DB? [ซ้ำ]

Jan 23 2021

ฉันต้องการแบ่งวันที่ 2 วัน (วันที่ปัจจุบันและวันที่ทำผม) เพื่อให้ได้ผลลัพธ์จากตารางเพื่อแสดงข้อมูลในช่วง 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;