私は、次の式SQL TO_CHAR TO_NUMBER TO_DATE
WHERE TO_CHAR(TO_DATE(dab.SNAPSHOT_DAY,'YYYYMMDD'),'MM') >=
TO_CHAR(TO_DATE('{RUN_DATE_YYYYMMDD}','YYYYMMDD'),'MM') -1
'{RUN_DATE_YYYYMMDD}' returns the date of when the data was captured.
を持って、私は次のエラーを取得:
ORA-01481:invalid number format model
列は、データ型の面でコヒーレントです。 dab.SNAPSHOT_DAY
は{DATE} 2016-07-24 00:00:00.0
何が起こっている可能性がありますか?
私がやっていることは、現在と過去1か月の結果を得ることです。それは私がMONTHに両方の日付を変換したい理由(MM)で、その後、例えば1をsubstract:
Snapshot_day = 05/JUN/2016 --> 06
RUN_DATE = 27/JUL/2016 --> 07
Comparing them: 06 >= 07 - 1 TRUE
あなたのすべてに感謝します! {RUN_DATE_YYYYMMDD}
が実際にある場合
where snapshot_day >= add_months(to_date('{RUN_DATE_YYYYMMDD}','YYYYMMDD'),-1)
そして:
「SNAPSHOT_DAY」列の日付の種類は何ですか? –
'snapshot_day'が既に' date'カラムである場合、 'TO_DATE(dab.SNAPSHOT_DAY、 'YYYYMMDD')'は全く無意味です。 –
これを修正しようとするのではなく、インプットが何であるか、そして望みの結果が何であるかを簡単に英語で言うほうがよいかもしれません。どのような場合でも、文字列に変換した後の日付を比較するのは間違っています。文字列から1を引く方法を明確にしていません。 – mathguy