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