Escenas
El valor de la fecha se almacena como una cadena de 10 dígitos, como 2020-02-01, cuando se filtra sql, debe seleccionar el que se encuentra dentro de 1 año.
select * from t_user
where
to_date(app_date ,'yyyy-MM-dd') > sysdate-360
- 1
- 2
- 3
Verifique el registro y encontró un error:
ORA-01839: fecha no válida para el mes especificado
solución
Este problema suele deberse a que la fecha no existe, por lo que el análisis falla.
Si excede el 31, está bien ubicarlo y se informará un error:
el valor del día del mes debe estar entre 1 y el último día del mes.
Pero si está dentro de los 31 días, como los datos del 02-29, está relativamente oculto y es difícil de encontrar, y se informará un error:
la fecha del mes especificado no es válida.
Primero extraigo todas las fechas elegibles y luego las ejecuto en lotes. Si se informa un error, continuaré reduciendo el alcance.
select to_date('2020-07-16','yyyy-MM-dd') from dual union
select to_date('2020-05-21','yyyy-MM-dd') from dual union
select to_date('2020-07-16','yyyy-MM-dd') from dual
- 1
- 2
- 3
Finalmente se determinó que había una fecha incorrecta, el 31 de junio de 2020. Esta fecha no existe en absoluto y es engañosa.
Simplemente modifíquelo a la fecha correcta.
Por último, no olvide ejecutar las otras fechas para asegurarse de que no haya otras fechas incorrectas.