Я обычно позволяю Oracle справиться с этим, используя что-то подобное в моем исходном запросе:
CAST( Coalesce (
CASE
WHEN TO_CHAR(Effective_Date,'yyyy-mm-dd HH24:MI:SS') < '1900-01-01 00:00:00'
THEN TO_DATE('9999-12-31 00:00:00','yyyy-mm-dd HH24:MI:SS')
ELSE Effective_Date
END ,TO_DATE('9999-12-31 00:00:00','yyyy-mm-dd HH24:MI:SS')) AS DATE) AS Effective_Date
Это устанавливает действительную, но очень будущую дату (продиктованную компанией, с которой я заключаю договор, как представление неверной даты в поле обязательной даты. Вы также можете использовать '1900-01-01 00:00:00'
вместо '9999-12-31 00:00:00'
) в случаях, когда исходная дата null
или меньше 1900-01-01 00:00:00
. Это также позволяет избежать последующей обработки службами SSIS в поле даты.