0

我需要创建一个 oracle plsql 脚本,其中输入参数 v_date 作为时区类型的时间戳。我还需要验证 v_date 的格式是否与提到的格式 'YYYY-MM-DD HH24:MI:SS TZH:TZM' 一致。我应该如何实现这一目标?

我正在考虑通过将输入参数 v_date 更改为String来实现 这一点,然后将此字符串转换为带时区的时间戳,如果转换时发生任何错误,则得出格式错误的结论。但似乎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 回答