[解決済み] ora-01841 通年は4713~9999の間で、0であってはならない。
2022-02-25 20:02:52
質問
私は、エラーメッセージを理解することができなかったようで、私を狂わせているクエリに取り組んできました:私のクエリは次のとおりです。
SELECT MYTABLE." ID ",
NVL(max(TO_DATE(TO_CHAR(ADD_MONTHS(MYTABLE." XISSU_DT " ,MYTABLE." XTNR "), 'DD/MM/YYYY'),'DD/MM/YYYY')), TO_DATE(SYSDATE , 'DD/MM/YYYY') ) MAXLASTINSDATE,
TO_DATE(SYSDATE , 'DD/MM/YYYY'),
(TO_CHAR (TO_DATE(SYSDATE , 'DD/MM/YYYY')
- TO_DATE(NVL(max(TO_DATE(TO_CHAR(ADD_MONTHS(MYTABLE." XISSU_DT " ,MYTABLE." XTNR "), 'DD/MM/YYYY'),'DD/MM/YYYY')), TO_DATE(SYSDATE , 'DD/MM/YYYY') ) , 'DD/MM/YYYY')) * -1) MaturityPeriod
FROM MYTABLE
where
MYTABLE." STATUS " = 'A'
group by MYTABLE." ID "
The Error I have been getting is:
ora-01841 full year must be between 4713 and 9999 and not be 0
本当にありがとうございます。
解決方法は?
TO_DATE(TO_CHAR(datevalue, 'DD/MM/YYYY'),'DD/MM/YYYY')
は、実質的に同じである任意の時間コンポーネントを削除しています。
TRUNC( datevalue )
.
次に
TO_DATE(SYSDATE , 'DD/MM/YYYY')
は、おそらくあなたのエラーがある場所です。
TO_DATE( stringvalue, format_model )
は第一引数に文字列を取るので、事実上このようになります。
TO_DATE(
TO_CHAR(
SYSDATE,
( SELECT value FROM NLS_SESSION_PARAMETERS WHERE parameter = 'NLS_DATE_FORMAT' )
),
'DD/MM/YYYY'
)
として意味をなさない。
SYSDATE
はすでに
DATE
というデータ型なので
TO_DATE
を使用します。
最後に
TO_CHAR(SYSDATE - datevalue)*-1
なぜ、文字列に変換してから数値を掛けるのか。
(SYSDATE - datevalue)*-1
しかし
*-1
というように、用語を入れ替えるだけでよいのです。
(datevalue - SYSDATE)
それを整理すると、次のようになります。
SELECT MYTABLE." ID ",
NVL(
MAX( TRUNC( ADD_MONTHS(MYTABLE." XISSU_DT " ,MYTABLE." XTNR ") ) ),
SYSDATE
) MAXLASTINSDATE,
SYSDATE,
( NVL(
MAX( TRUNC( ADD_MONTHS(MYTABLE." XISSU_DT " ,MYTABLE." XTNR ") ) ),
SYSDATE
)
- SYSDATE
) AS MaturityPeriod
FROM MYTABLE
where MYTABLE." STATUS " = 'A'
group by MYTABLE." ID "
関連
-
OracleインストールTNS_ADMIN環境変数設定リファレンス
-
オラクルストアドプロシージャの事例を解説
-
Oracle Temporary Tablespace SQLステートメントの実装
-
[解決済み] エラーを取得する - ORA-01858: 数値が期待される場所で非数値文字が見つかりました。
-
[解決済み] ORA-01461: LONG 値は、LONG 列への挿入にのみバインドできます-クエリー時に発生します。
-
[解決済み] ORA-01882: タイムゾーン領域が見つかりません。
-
[解決済み] PLS-907でライブラリユニットを読み込めない
-
[解決済み] このPL/SQLは何が問題なのでしょうか?バインド変数 * が DECLARED ではありません。
-
[解決済み] pl sql %NOTFOUND
-
[解決済み] ORA-01747:user.table.column, table.column, または column の指定が無効です。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
オラクル表領域拡張の詳細
-
PLSQLは、ローカルオラクルまたはリモートオラクルデータベースに接続し、ランダムスイッチ機能を実現します。
-
オラクルにおけるNEXTVALの事例を解説
-
Oracleの表領域と権限を徹底解説
-
オラクルのブロック修正追跡機能の説明
-
Oracle Logminer クイックスタート詳細
-
PLSQL14ダウンロードとインストールチュートリアル
-
[解決済み】ソケットから読み込むデータがなくなるエラー
-
[解決済み] ORA-00955 "名前はすでに既存のオブジェクトによって使用されています"
-
[解決済み] libclntsh.so.11.1: 共有オブジェクト・ファイルを開くことができません。