我正在运行下面编写的人员代码并收到错误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);
请建议如何解决这个问题?
答案 0 :(得分:1)
我在PeopleSoft中表现不佳,但我的Oracle经验告诉我你做错了。
你连续两次调用sysdate。这不会给你 很大的不同。几毫秒,也许
您将&datetimefrom
和&datetimeto
声明为datetime
,但同时您在其中选择了字符值。 SELECT sysdate FROM DUAL
应该足够了。
在Oracle中,您可以简单地减去日期,如:
SQLExec(“选择%DATEIN(:1) - %DATEIN(:2)来自双”,& datetimefrom,& datetimeto,& Diff);
或
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将包含两个输入日期时间之间以分钟表示的差异。
中找到更多详情