1

HANA ストアド プロシージャで現在までの日数を追加する必要がありますが、エラー メッセージが表示されます

日付/時刻の解析中にエラーが発生しました

p_end_dateストアド プロシージャのパラメーターであるこのステートメントを使用します。

v_end_date_plus := add_days (TO_DATE(' || p_end_date || ' , 'YYYY-MM-DD' ), 90)

他の方法や私が間違っていることはありますか?

4

3 に答える 3

2

受け取ったエラーを投稿していませんが、コードの問題は入力変数の参照方法にあると思います。

v_end_date_plus := add_days ( :p_end_date , 90);

パラメータの前にコロン (:) を付けると、別のデータ型にキャストしなくても使用できるようになります。

于 2016-04-29T14:08:38.533 に答える
-1

p_end_datevarchar フィールド、またはテクノロジで使用される適切な文字列リテラルである必要があります。引用符で囲まないでください。

v_end_date_plus := add_days (TO_DATE(p_end_date , 'YYYY-MM-DD' ), 90)

参考としてオラクルを使用した説明:

Oracle データベースでは、デフォルトの日付形式は dd-MON-RR または dd-MON-YYYY です。

したがって、正しい日付形式を p_end_date 変数に使用すると、出力を取得できます。 ここに画像の説明を入力

ただし、この既定の形式から逸脱すると、試行がエラーになります。

ここに画像の説明を入力

したがって、p_end_dateデフォルト設定ではなく、選択した形式で柔軟に再定義する必要がある場合は、文字列リテラル (Oracle の varchar ) にする必要があります。

編集:

この回答の本質は、変数を varchar として渡す必要があることを示唆することでした。p_end_date 変数の構文を変更するには、以下の Lars Br の提案を借用します。

v_end_date_plus := add_days (TO_DATE(:p_end_date , 'YYYY-MM-DD' ), 90)
于 2016-04-28T18:00:55.903 に答える