Oracle: kein gültiger Monat

Ich habe eine Tabelle mit folgenden Feldern:

Berichte (Tabellenname) Rep_Date (Datum) Rep_Time (Datum)

Das Rep_Time-Feld hat Werte wie '01 / 01/1753 07:30:00 ', d. H. Der Zeitteil ist relevant. Ich habe folgende Anfrage geschrieben:

select Reports.pid, MaxDate from Reports
INNER JOIN (
    select pid, max(TO_DATE(TO_CHAR(REP_DATE, 'DD/MM/YYYY')
        || TO_CHAR(REP_TIME, 'HH24:MI:SS'), 'DD/MM/YYYY HH24:MI:SS')) As MaxDate
    from reports
    group by pid
) ReportMaxDate
on Reports.PID = ReportMaxDate.PID
AND To_Date(To_Char(MaxDate, 'DD/MM/YYYY')) = REP_DATE
WHERE REPORTS.PID=61

Der abgeleitete Tabellenteil der Abfrage wird ausgeführt, aber wenn ich die gesamte Abfrage ausführe, wird die Fehlermeldung "Kein gültiger Monat" angezeigt. Warum ist das?

Um dies zu debuggen; wenn ich die folgende Abfrage ausführen:

select rep_date, rep_time from reports where pid=61 and rownum=1

Ich bekomme:

Rep_Date = 01/04/2009
Rep_Time = 01/01/1753 13:00:00

UPDATE 15:58 Ich kann jetzt die folgende Abfrage ausführen:

select Reports.pid, MaxDate from Reports
INNER JOIN (
    select pid, max(TO_DATE(TO_CHAR(REP_DATE, 'DD/MM/YYYY')
        || TO_CHAR(REP_TIME, 'HH24:MI:SS'), 'DD/MM/YYYY HH24:MI:SS')) As MaxDate
    from reports group by pid
) ReportMaxDate
on Reports.PID = ReportMaxDate.PID
AND to_date(to_char(maxdate,'MM/DD/YYYY'),'MM/DD/YYYY') = REP_DATE
WHERE REPORTS.PID=61

Ich muss jedoch noch eine weitere Aussage hinzufügenWHERE Klausel, die den Zeitteil von MaxDate mit rep_time vergleicht:to_date(to_char(maxdate,'MM/DD/YYYY'),'MM/DD/YYYY') = REP_DATE funktioniert nicht.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage