powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Функция преобразующая текстовое поле в дату
7 сообщений из 7, страница 1 из 1
Функция преобразующая текстовое поле в дату
    #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
Функция преобразующая текстовое поле в дату
    #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
Функция преобразующая текстовое поле в дату
    #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
Функция преобразующая текстовое поле в дату
    #39752771
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MacJei,

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

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

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


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