Я использую эту функцию в течение последних нескольких лет, которая преобразует входную строку в действительную дату в определенном формате.
select FN_RETURN_VALID_DATE('20200228005815354241') from dual;
Вышеприведенный запрос вернется, 28-02-2002 00:58: 15
Однако, начиная с 29/02/2020, если строка ввода функции изменится на '202002 29 005947354241', она вернет ноль! Я не уверен, что это что-то связано с високосным годом, но пока не могу это выяснить.
Определение функции:
CREATE OR REPLACE FUNCTION "FN_RETURN_VALID_DATE" ( v_STR IN VARCHAR2 ) RETURN
DATE
IS
BEGIN
RETURN TO_DATE
(
substr(v_STR, 7, 2) || '-' ||
substr(v_STR, 5, 2) || '-' ||
substr(v_STR, 2, 2) || ' ' ||
substr(v_STR, 9, 2) || ':' ||
substr(v_STR, 11, 2) || ':' ||
substr(v_STR, 13, 2), 'DD-MM-YY HH24:MI:SS') ;
EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
END;
Я проверил, что нет ошибки, когда Я проверил, получил ли я это сообщение «ORA-0000: нормальное, успешное завершение». Пожалуйста, дайте мне знать, в чем может быть проблема.
С уважением, S