web-dev-qa-db-ja.com

Oracleでの日付とsysdateの比較

"DATE"タイプの列があり、それをsysdateと比較してクエリを実行したいと思います。

しかし、次のエラーが発生します。ここで不足しているものを誰かに教えてもらえますか?

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
7
TopCoder

日付にはto_dateを使用しないでください。To_dateは、日付ではなくvarcharを日付にキャストするためのものです。
日付に関数to_dateを使用する場合、Oracleはそれをnls_date_formatに従って文字列として参照します。これは、環境によって異なる場合があります。
@ jonearlesが言ったように、sysdateの時間を削除する場合は、TRUNCを使用します

16
A.B.Cade

使用する:

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

エラーは、VIEW_DAY列はvarcharなので、DATEをStringに変換する必要があります。使用する TO_CHARまたは変換VIEW_DAY日付タイプ。

0
adatapost