ORA-01830:日期格式图片在转换整个输入字符串之前结束

时间:2013-07-12 06:00:57

标签: sql oracle10g peoplesoft

我正在运行下面编写的人员代码并收到错误ORA-01830: date format picture ends before converting entire input string

我需要计算不同页面上两个日期的时差(分钟)。

Component datetime &datetimefrom;
Component datetime &datetimeto;

SQLExec("SELECT to_char(sysdate, 'YYYY-MM-DD HH24-MI-SS') FROM DUAL", &datetimefrom);
SQLExec("SELECT to_char(sysdate, 'YYYY-MM-DD HH24-MI-SS') FROM DUAL", &datetimeto);
SQLExec("Select %DateTimeDiff(:1, :2) from dual", &datetimefrom, &datetimeto, &Diff);

请建议如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

我在PeopleSoft中表现不佳,但我的Oracle经验告诉我你做错了。

  1. 你连续两次调用sysdate。这不会给你 很大的不同。几毫秒,也许

  2. 您将&datetimefrom&datetimeto声明为datetime,但同时您在其中选择了字符值。 SELECT sysdate FROM DUAL应该足够了。

  3. 在Oracle中,您可以简单地减去日期,如:

    SQLExec(“选择%DATEIN(:1) - %DATEIN(:2)来自双”,& datetimefrom,& datetimeto,& Diff);

  4. SQLExec("Select %DateTimeDiff((:1),%DATEIN(:2)) from dual", &datetimefrom, &datetimeto, &Diff);
    

    如果您确定,%DateTimeDiff会为您提供所需的结果。

答案 1 :(得分:0)

在SQL对象中使用绑定时,您绝对需要使用metaSQL指令%datein(:1)或%datetimein(:1)封装日期和日期时间参数,以确保它们能够正确使用。 这将转化为    TO_DATE(:1,'YYYY-MM-DD HH:MI:SS')

所以你的例子是:

Component datetime &datetimefrom;
Component datetime &datetimeto;

SQLExec("SELECT to_char(sysdate, 'YYYY-MM-DD HH24-MI-SS') FROM DUAL", &datetimefrom);
SQLExec("SELECT to_char(sysdate, 'YYYY-MM-DD HH24-MI-SS') FROM DUAL", &datetimeto);
SQLExec("Select %DateTimeDiff(%datetimein(:1), %datetimein(:2)) from dual", &datetimefrom, &datetimeto, &Diff);

& Diff将包含两个输入日期时间之间以分钟表示的差异。

可在PeopleBooks

中找到更多详情