Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Функция преобразующая текстовое поле в дату / 7 сообщений из 7, страница 1 из 1
25.12.2018, 13:19
    #39752754
MacJei
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция преобразующая текстовое поле в дату
Привет ребята!
Помогите, пожалуйста, написать функцию на PL/SQL.
Есть поле BIRTHDAY, оно текстовое. Надо осуществить проверку и привести к общему виду, если это возможно.
Необходимый формат: DD.MM.YYYY

BIRTHDAY
-------------
1997-04-14
00.00.0
30.11.1961
1988-10-30T00:00:00:000
20.11.1982
7986-06-05
...
Рейтинг: 0 / 0
25.12.2018, 13:35
    #39752766
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция преобразующая текстовое поле в дату
MacJei,

Oracle Doc SQL References TO_DATE
Datetime Format Models


Далее перехват ( PL/SQL Error Handling ) возможных ошибок преобразования и проверка на корректность
типа:
Код: plsql
1.
2.
3.
4.
SQL> select to_date('12.13.62','DD.MM.RR') from dual
               *
ERROR at line 1:
ORA-01843: not a valid month


Но как ты будешь определять, что в строке сохранено, например вот в такой:
'6.11.1961' - Это 6 ноября или 11 июня?
...
Рейтинг: 0 / 0
25.12.2018, 13:38
    #39752770
Swa111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция преобразующая текстовое поле в дату
MacJei,

Создайте свою хранимую функцию которая на вход будет принимать строку,
а дальше по шаблонам разбирать строку

Код: plsql
1.
2.
3.
4.
5.
6.
 begin
  dRes := to_date(sDate,'dd.mm.yyyy');
 exception when others then
  dRes := to_date(sDate,'yyyy-mm-dd');
   --... и так далее пока не переберете все случаи
 end;
...
Рейтинг: 0 / 0
25.12.2018, 13:38
    #39752771
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция преобразующая текстовое поле в дату
MacJei,

Единственно, для спорных строк, в том числе и тех, что могут толковаться двояко, создать таблицу ссылок на спорные записи для ручного разбора оператором
...
Рейтинг: 0 / 0
25.12.2018, 13:44
    #39752777
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция преобразующая текстовое поле в дату
Vadim Lejninдвоякотрояко, четверяко,... Например 11-11-11 можно трактовать шестеряко с одинаковым результатом.
...
Рейтинг: 0 / 0
25.12.2018, 13:52
    #39752782
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция преобразующая текстовое поле в дату
Vadim LejninДалее перехват ( PL/SQL Error Handling ) возможных ошибок преобразования и проверка на корректность
типа: c 12.2 можно указать дефолтное значение на случай ошибок преобразования
...
Рейтинг: 0 / 0
25.12.2018, 17:19
    #39752955
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция преобразующая текстовое поле в дату
xtender c 12.2 можно указать дефолтное значение на случай ошибок преобразования

Лучше бы Oracle добавил парaметр NLSPARAM ко всем DATE/TIMESTAMP функциям и кроме 'NLS_DATE_LANGUAGE = language' добавил-бы туда как минимум NLS_TERRITORY. А то ф-ции типа NEXT_DAY и скажем формат D как не дружили с глобализацией так и не дружат.

SY.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Функция преобразующая текстовое поле в дату / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]