0

入力パラメーター v_date をタイム ゾーンタイプのタイムスタンプとして持つ Oracle plsql スクリプトを作成する必要があります。また、v_date の形式が前述の形式 'YYYY-MM-DD HH24:MI:SS TZH:TZM' に従っているかどうかを確認する必要があります。どうすればこれを達成できますか?

入力パラメーター v_date を文字列として変更し、この文字列をタイムゾーン付きのタイムスタンプに 変換することでこれを達成することを考えていました。変換中にエラーが発生した場合は、形式が間違っていると結論付けます。しかし、日付文字列が指定された形式とは異なる形式である場合、TO_TIMESTAMP_TZ関数はエラーをスローしないようです。代わりに、それを変換します。

例えば

SELECT TO_TIMESTAMP_TZ('15-APR-15',
   'YYYY-MM-DD HH:MI:SS TZH:TZM') FROM DUAL;

実結果 :14-APR-15 11.50.00.000000000 PM AMERICA/CHICAGO

期待される結果 :Some error as format is not as per 'YYYY-MM-DD HH:MI:SS TZH:TZM'

要するに、タイムゾーンタイプでタイムスタンプの形式を確認する方法を知りたいです。

4

1 に答える 1

1

「fx」修飾子をフォーマットに追加してみてください。これにより、Oracle は「この正確なフォーマットを期待する」ようになります。

SELECT TO_TIMESTAMP_TZ('15-APR-15 ', 'fxYYYY-MM-DD HH:MI:SS TZH:TZM') FROM DUAL;

SELECT TO_TIMESTAMP_TZ('15-APR-15 ', 'fxYYYY-MM-DD HH:MI:SS TZH:TZM') FROM DUAL
                       *
Error at line 1
ORA-01862: the numeric value does not match the length of the format item
于 2015-05-12T08:50:45.737 に答える