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 говорит мне, что вы делаете это неправильно.
Вы вызываете 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
дает вам результаты, которые вы хотите.
При использовании связываний в объекте 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