Tengo una tabla con los siguientes campos:Oracle: un mes no válida
Informes (nombre de la tabla) Rep_Date (fecha) Rep_Time (fecha)
El campo Rep_Time tiene valores como '01/01/1753 07:30:00 'es decir, la parte de tiempo es relevante. He escrito la siguiente consulta:
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
La parte tabla derivada de la consulta se ejecuta, pero cuando corro toda la consulta me sale un error: "no válido un mes". ¿Por qué es esto?
Para ayudar a depurar esto; si se me acaba la siguiente consulta:
select rep_date, rep_time from reports where pid=61 and rownum=1
me sale:
Rep_Date = 01/04/2009
Rep_Time = 01/01/1753 13:00:00
ACTUALIZACIÓN 15:58 ahora soy capaz de ejecutar la siguiente consulta:
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
Sin embargo, necesito para agregar una declaración más a la cláusula WHERE
que compara la parte de tiempo de MaxDate con rep_time: to_date(to_char(maxdate,'MM/DD/YYYY'),'MM/DD/YYYY') = REP_DATE
no funciona.
En respuesta a su pregunta MaxDate es un DateTime y REP_DATE es una fecha. ¿Qué hace trunc (MaxDate) = rep_date DO? – w0051977
trunc (date) eliminaría el componente de tiempo (en realidad, hace que el componente de tiempo sea cero, que es el caso con una columna de fecha como REP_DATE. No existe tal cosa como la fecha en Oracle.) –
+1, gracias trabajos. ¿Podría explicarme cómo obtener el componente de tiempo de una fecha y hora antes de aceptar? to_date (to_char (maxdate, 'HH24: MI: SS'), 'HH24: MI: SS') no parece funcionar. – w0051977