我有一个包含以下字段的表:
报告(表名)
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不起作用.