0

DATEタイプがで、値が次の形式の日付列があります23-AUG-12, 09-FEB-12.。今、クエリを実行しようとしていますが、次のエラーが発生しています。

ORA-01843: not a valid month
01843. 00000 -  "not a valid month"
*Cause:    
*Action:

これがクエリです。実際には、現在の日付を右側に取得したいfirst_appr_dt = current date

select LOSA_APP.app_ref_no AS "App.Ref.No." from losa_app LOSA_APP where 
LOSA_APP.app_status='A' and first_appr_dt = 
(SELECT TO_CHAR(SYSDATE, 'MM-DD-YYYY') from dual);

私は何を間違っていますか?助けてください 。

ありがとう

4

2 に答える 2

0

first_appr_dtが実際にDATE列である場合、日付を文字列として比較する必要はありません。実際、それがおそらく問題の原因です。

さらに、この単純な表現のためにDUALから選択する必要はありません。

あなたはむしろ欲しい:

select LOSA_APP.app_ref_no AS "App.Ref.No." from losa_app LOSA_APP
where LOSA_APP.app_status = 'A' and first_appr_dt = trunc(sysdate);

TRUNCテーブルにはおそらく時刻が00:00:00に設定された日付が含まれているため、クエリは日付から時刻を削除するために使用することに注意してください。そうでない場合は、次の条件を試してください。

trunc(first_appr_dt) = trunc(sysdate)

本当に日付を文字列として比較したい場合TO_CHARは、比較の両側に使用する必要があります。

to_char(first_appr_dt, 'DD-MON-YYYY') = to_char(sysdate, 'DD-MON-YYYY')
于 2012-11-20T07:03:45.250 に答える
0
select LOSA_APP.app_ref_no AS "App.Ref.No." from losa_app LOSA_APP where 
LOSA_APP.app_status='A' and first_appr_dt = 
(SELECT TO_CHAR(SYSDATE, 'DD-MON-YY') from dual);
于 2012-11-20T06:40:07.463 に答える