2012-02-05 1 views
6

Ho una colonna che è di tipo "DATE" e voglio eseguire una query su di esso confrontandola con sysdate.Confronto data con sysdate in oracle

Ma sto ricevendo errore di seguito, Qualcuno può per favore fatemi sapere cosa mi manca qui?

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

Se una di queste risposte ha aiutato con la soluzione si prega di segno verde esso. –

risposta

0

Errore dimostra che una colonna VIEW_DAY è varchar quindi è necessario convertire DATE a stringa. Utilizzare o convertire VIEW_DAY al tipo di data.

+1

No. view_date è di tipo DATE – TopCoder

+2

@TopCoder - Suppongo! Dai un'occhiata a: http://www.orafaq.com/wiki/ORA-01858 – adatapost

+0

Grazie! hai ragione. Il formato data predefinito per view_date e sysdate nel mio sistema erano entrambi impostati su DD-MON-YYYY. Cambiare il formato con lo stesso ha aiutato! – TopCoder

14

Non si dovrebbe usare to_date in una data, To_date è per trasmettere un varchar alla data, non una data.
Se si utilizza la funzione to_date in una data, oracle si riferirà ad esso come una stringa in base a nls_date_format che può variare in ambienti diversi.
Come @jonearles Detto questo, se si desidera rimuovere il tempo in sysdate quindi utilizzare TRUNC

+1

+1 per "non utilizzare to_date sulle colonne della data". –

6

USO:

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