2012-02-05 19 views
6

Tengo una columna que es del tipo "DATE" y quiero ejecutar una consulta comparándola con sysdate.Comparación de fecha con sysdate en oráculo

Pero me aparece el siguiente error, ¿Puede alguien decirme qué es lo que me falta aquí?

SQL> select distinct file_name as r 
    from table_1 
    where view_day >= TO_DATE(SYSDATE-10, 'YYYY/MM/DD'); 

ERROR at line 1: 
ORA-01858: a non-numeric character was found where a numeric was expected 
+0

Si una de estas respuestas que ayudaron con la solución favor marca verde él. –

Respuesta

0

de error indica que una columna varchar VIEW_DAY es por lo que necesita para convertir a FECHA cadena. Use TO_CHAR o convierta VIEW_DAY al tipo de fecha.

+1

No. view_date es del tipo DATE – TopCoder

+2

@TopCoder - ¡Supongo! Echa un vistazo a - http://www.orafaq.com/wiki/ORA-01858 – adatapost

+0

¡Gracias! tienes razón. El formato de fecha predeterminado para view_date y sysdate en mi sistema se estableció en DD-MON-YYYY. Cambiar el formato a la misma ayudó! – TopCoder

14

No debe usar to_date en una fecha, To_date es para enviar un varchar a la fecha, no una fecha.
Si usa la función to_date en una fecha, entonces oracle se referirá a ella como una cadena de acuerdo con nls_date_format, que puede variar en diferentes entornos.
Como se ha dicho @jonearles, si desea eliminar el tiempo en sysdate a continuación, utilizar TRUNCAR

+1

+1 para "no usar to_date on date columns". –

6

USO:

select distinct file_name as r 
from table_1 
where view_day >= TRUNC(SYSDATE-10)