在sqlplus中获取此错误 - ORA-01855:AM / A.M.或PM / P.M。需要

时间:2016-09-15 09:30:14

标签: sql oracle

我正在执行此查询并收到此错误。请帮忙。

SQL> select to_timestamp((sysdate-1)||'01.00.00.000000000 PM','DD-MON-RR HH.MI.SS.FF PM') from dual;
  

第1行的错误:ORA-01855:AM / A.M。或PM / P.M。需要

1 个答案:

答案 0 :(得分:0)

如果在没有显式强制转换的情况下使用sysdate,则假定您的NLS设置以'DD-MON-RR'格式提供日期。 要构建更安全的查询,请使用显式转换,格式为mask:

Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL> select to_timestamp(to_char(sysdate-1,'DD-MON-RR' ) ||' 01.00.00.000000000 PM','DD-MON-RR HH.MI.SS.FF PM') from dual;

TO_TIMESTAMP(TO_CHAR(SYSDATE-1,'DD-MON-RR')||'01.00.00.000000000PM','DD-MON
---------------------------------------------------------------------------
15-SET-16 13:00:00,000000000

SQL>