为什么会出现此错误'ErrorORA-01810:格式代码出现两次'

时间:2016-02-07 05:53:37

标签: oracle plsql

在我的oracle函数中,我有一个TIMESTAMP类型的变量。我提取一个xml值并将其转换为时间戳,但会发生此错误。我正在提供代码和示例输入 首先,我将变量声明如下:

input_ebasp_created_on TIMESTAMP;  

然后我提取并将值放入其中:

IF xmlData.existsnode('/employees/employee/ebasp_created_on/text()')>0 THEN
  input_ebasp_created_on:=TO_TIMESTAMP(xmlData.extract('/employees/employee/ebasp_created_on/text()').getstringval(),'DD-MM-YYYY   HH:MM:SS AM');
END IF;  

如果我运行此代码,则会发生此错误:

ErrorORA-01810: format code appears twice  

示例输入为:7-2-2016 11:52:39 AM

1 个答案:

答案 0 :(得分:4)

您正在使用MM两次。第二次出现MM及时部分是错误的,就像你使用MI的分钟一样。

将您的代码更改为

IF xmlData.existsnode('/employees/employee/ebasp_created_on/text()')>0 THEN 
  input_ebasp_created_on:=TO_TIMESTAMP(xmlData.extract('/employees/employee/ebasp_created_on/text()').getstringval(),'DD-MM-YYYY HH:MI:SS AM'); 

END IF;