Функция Oracle TO_DATE
принимает NULL
значения (и возвращает NULL
в этом случае). Полученная ошибка означает, что данное значение не соответствует указанному формату.
Если -1
является единственным недопустимым значением, которое может отображаться, просто замените его на NULL
, например:
TO_DATE(
NULLIF(TEST.PRELIM_DATE, -1),
'YYYYMMDD'
)
Начиная с Oracle 12.2, другим решением является использование предложения ON CONVERSION ERROR
, например:
TO_DATE(
TEST.PRELIM_DATE,
'YYYYMMDD'
) DEFAULT NULL ON CONVERSION ERROR
Это перехватит все ошибки преобразования и вернет NULL
вместо того, чтобы выдавать ошибку (обратите внимание, что это может привести к маскировке допустимых ошибок). С документация :
Необязательное предложение DEFAULT return_value ON CONVERSION ERROR
позволяет указать значение, которое возвращает эта функция, если при преобразовании char
в DATE
возникает ошибка. Это условие не действует, если при оценке char
возникает ошибка. return_value
может быть выражением или переменной связывания, и оно должно вычисляться как строка символов типа данных CHAR
, VARCHAR2
, NCHAR
, NVARCHAR2
или null
. Функция преобразует return_value
в DATE
, используя тот же метод, который используется для преобразования char to <code>DATE
. Если return_value
не может быть преобразовано в ДАТУ , функция возвращает ошибку.