Для тех, кто заинтересован.
Я только что понял.
В функции ORACLE CAST имеется ошибка, из-за которой она работает по-разному при использовании CAST в SQL по сравнению с использованием CAST в PL / SQL.
Функция CAST ошибочно округляет дробные части в SQL и корректно обрезает их в PL / SQL.
Как мы видим, PL / SQL ведет себя так же, как и преобразование «по умолчанию» (вставка в метку времени выбора даты), означающее, что преобразование «по умолчанию» также работает правильно.
Ошибка исправлена в 11gR2, и есть исправление для 10g.
CAST SQL должен (и будет после патча) ОБРАЩАТЬСЯ к дробным дробям вместо их округления.
Спасибо.