[Ora] Парсинг строки в дату
От: Пингвиненок Россия  
Дата: 21.03.07 12:43
Оценка:
Задача такая. В базу из текстового файла грузятся данные. Надо проверить являются ли эти данные датой. Дело в том, что формат входных данных заранее не известен. Это может быть 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;


Но это естественно не выход, т.к. формат по умолчанию в базе.
То что меня не убивает, делает меня умнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.