2017-03-20 1 views
0

Im derzeit an einem Projekt arbeiten zu zählen und die Ausgabe im suchen, ich brauche die Anzahl der Tage zwischen einem Termin und den Betrieb zu zählen, zur Zeit habe ich dieseWie die Anzahl der Tage zwischen Terminen

Select Patient_FirstName ||' '|| Patient_surname "Patient Name", appointment_date, OPeration_date, datediff(Appointment_Date,Operation_Date) "Days till operation" 
from PatientRecord p , Patient b, Appointment a, Operation o 
where p.patient_ID = b.Patient_ID 
and p.appointment_ID = a.appointment_ID 
and p.operation_ID = o.OPeration_ID 
order by Patient_Surname; 

welches nur eine ungültige Kennung Rückkehr

wenn i-Rund Monate es funktioniert gut, aber ich brauche Tage

Select Patient_FirstName ||' '|| Patient_surname "Patient Name", appointment_date, OPeration_date, Round (months_between(Appointment_Date,Operation_Date)) "Days till operation" 
from PatientRecord p , Patient b, Appointment a, Operation o 
where p.patient_ID = b.Patient_ID 
and p.appointment_ID = a.appointment_ID 
and p.operation_ID = o.OPeration_ID 
order by Patient_Surname; 

das ist, was ich für die Rundung Monate haben, gibt es einige etwas ähnliches kann ich tagelang machen?

+0

einfach tun 'Appointment_Date - Operation_Date' den Unterschied in Tagen. –

+0

http://StackOverflow.com/Questions/28406397/datediff-Function-in-Oracle – etsa

Antwort

0

Zuerst, Nie Kommas in der FROM Klausel verwenden. Immer verwenden Sie die richtige, explizite JOIN Syntax.

In Oracle können Sie subtrahieren nur die Termine:

Select Patient_FirstName ||' '|| Patient_surname as "Patient Name", 
     appointment_date, Operation_date, 
     trunc(Operation_Date - Appointment_Date) as "Days till operation" 
from PatientRecord pr join 
    Patient p 
    on pr.patient_ID = p.Patient_ID join 
    Appointment a 
    on pr.appointment_ID = a.appointment_ID join 
    Operation o 
    on pr.operation_ID = o.Operation_ID 
order by Patient_Surname; 
+0

, dass Trunk-Funktion arbeitete sehr viel, in Bezug auf die Klausel von, als ich die Join-Syntax tat es nicht die richtigen Daten zurück, aber meine Originalcode hat? –

+0

'Patient p' sollte' Patient b' sein (und der Join-Zustand muss behoben werden). Dies berücksichtigt auch nicht, wann der Termin und die Operation Zeitkomponenten haben und zum Beispiel tatsächlich 2 Tage 21 Stunden auseinander liegen, aber im Kalender wäre dies eine Differenz von 3 Tagen. – MT0

+0

Warum kann die "Komma" -Syntax nicht verwendet werden? Oracle vor Version 9 nicht unterstützen "Join" -Syntax ... – Mike

-3

Versuchen Sie folgendes:

Select DateDiff(d,Appointment_Date,Operation_Date) as [Days till operation] 
+1

Oracle hat keine DATEDIFF-Funktion. – MT0

0

Wenn die appointment_date2017-01-01 14:30:00 ist und die operation_date ist 2017-01-04 09:30:00 dann die Differenz 2 Tage und 21 Stunden aber Sie möchten wahrscheinlich, dass dies als der Unterschied zwischen 2017-01-01 und 2017-01-04 verglichen und als 3 Tage angezeigt wird (anstatt 2) also:

Sie könnten auch verwenden:

CEIL(Operation_Date - Appointment_Date) AS "Days till operation" 
+0

funktioniert die innere Join-Funktion, vielen Dank nochmal geholfen :) –

Verwandte Themen