ORA-01830: изображение в формате даты заканчивается перед преобразованием всей входной строки

Я запускаю код людей, написанный ниже, и получаю ошибку 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 ответа

Я не так хорош в PeopleSoft, но мой опыт работы с Oracle говорит мне, что вы делаете это неправильно.

  1. Вы вызываете sysdate оба раза подряд. Это не даст вам большой разницы. Может быть, пару миллисекунд

  2. Вы объявили &datetimefrom а также &datetimeto как datetime, но в то же время вы выбираете в нем значение символа. SELECT sysdate FROM DUAL должно быть достаточно.

  3. В Oracle вы можете просто вычесть даты как:

    SQLExec ("Выбрать%DATEIN(:1)-%DATEIN(:2) из ​​двойного", &datetimefrom, &datetimeto, &Diff);

или же

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

если ты уверен, что %DateTimeDiff дает вам результаты, которые вы хотите.

При использовании связываний в объекте SQL вам абсолютно необходимо инкапсулировать ваши параметры даты и даты и времени, используя инструкцию metaSQL%datein(:1) или%datetimein(:1), чтобы обеспечить их правильное использование. Это будет преобразовано в TO_DATE(:1, "ГГГГ-ММ-ДД ЧЧ: МИ: СС")

Итак, ваш пример будет:

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

Другие вопросы по тегам