Задача такая. В базу из текстового файла грузятся данные. Надо проверить являются ли эти данные датой. Дело в том, что формат входных данных заранее не известен. Это может быть 31.12.2007 или 12.31.2007, или 31 Дек 2007, или Дек 31 2007, а может и вообще датой не быть. При чем как выгружали данные в файл — неизвестно. Форматы могут чередоваться. как лучше поступить?
Я делаю так:
DECLARE
date_variable VARCHAR2 (100) := TO_CHAR (SYSDATE, 'mm dd yyyy');
FUNCTION is_date (STRING VARCHAR2)
RETURN BOOLEAN
IS
temp DATE;
BEGIN
temp := TO_DATE (STRING);
RETURN TRUE;
EXCEPTION
WHEN OTHERS
THEN
RETURN FALSE;
END;
BEGIN
IF is_date (date_variable)
THEN
DBMS_OUTPUT.put_line (date_variable || ' - Date.');
ELSE
DBMS_OUTPUT.put_line (date_variable || ' - Not date.');
END IF;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line (SQLERRM);
END;
Но это естественно не выход, т.к. формат по умолчанию в базе.