0

我正在运行下面编写的人员代码并出现错误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);

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

4

2 回答 2

1

我在 PeopleSoft 方面做得不是很好,但我的 Oracle 经验告诉我你做错了。

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

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

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

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

或者

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

如果你确定,那%DateTimeDiff会给你你想要的结果。

于 2013-07-12T06:43:03.047 回答
0

在 SQL 对象中使用绑定时,您绝对需要使用元 SQL 指令 %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中找到

于 2013-07-23T15:49:58.277 回答