Код ORACLE Pro * C / C ++ не округляет результаты - PullRequest
0 голосов
/ 31 января 2019

У меня есть таблица базы данных с именем My_table со столбцом с именем timestamps, который содержит следующие данные.

12-May-19
12-Jun-09
12-Apr-08

Когда я преобразовываю эту метку времени с 1970 года, используя этот SQL-запрос:

SELECT (timestamps - to-date(197001010000, 'yyyymmddhhss)×864) from My_table;

Возвращает округленное целое число, например 1459600, как и ожидалось на терминале ORACLE SQLPLUS.Однако, если я выполняю тот же запрос в динамическом коде ORACLE Pro * C / C ++, который правильно устанавливает тип данных как целое число (selectda-T (i) = 2), он не округляет результаты, а только усекает результаты,

Как заставить его вести себя точно так же, как на терминале ORACLE SQLPLUS?

1 Ответ

0 голосов
/ 31 января 2019

Да, если вы проверите спецификацию , Oracle говорит:

INTEGER ... На выходе, если значение столбца является действительным числом, Oracle усекает любую дробную часть.

Итак, если вы хотите, чтобы ваше целое число было округлено, вы должны сделать это самостоятельно в SQL, например,

SELECT round(timestamps - to-date(197001010000, 'yyyymmddhhss')×864) from My_table;
...