Oracle: недействительный месяц
У меня есть таблица со следующими полями:
Отчеты (имя таблицы) Rep_Date (дата) Rep_Time (дата)
Поле Rep_Time имеет значения, такие как «01.01.1753 07: 30: 00». то есть временная часть имеет значение. Я написал следующий запрос:
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
Производная табличная часть запроса выполняется, но когда я выполняю весь запрос, я получаю сообщение об ошибке: «недопустимый месяц». Почему это?
Чтобы помочь отладить это; если я запускаю следующий запрос:
select rep_date, rep_time from reports where pid=61 and rownum=1
Я получил:
Rep_Date = 01/04/2009
Rep_Time = 01/01/1753 13:00:00
ОБНОВЛЕНИЕ 15:58 Теперь я могу выполнить следующий запрос:
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
Однако мне нужно добавить еще одно утверждение кWHERE
предложение, сравнивающее временную часть MaxDate с rep_time:to_date(to_char(maxdate,'MM/DD/YYYY'),'MM/DD/YYYY') = REP_DATE
не работает.