У меня есть материализованное представление текстового столбца, который извлекает строку чисел, представляющих дату.
Материализованное представление создается с использованием следующей функции:
(regexp_replace(left(substring(lower(replace(content,' ','_')) from 're-inspection_date:_(.*)_'),10),'\D','','g'))
И выводиттекстовая строка в формате MMDDYYYY , за исключением , она не не учитывает начальные нули для однозначных месяцев и дней.
Когда я пытаюсь использовать "to_date"функция, определяющая формат MMDDYYYY с использованием следующего:
(to_date(regexp_replace(left(substring(lower(replace(content,' ','_')) from 're-inspection_date:_(.*)_'),10),'\D','','g'),'MMDDYYYY'))
Я получаю сообщение об ошибке «Значение поля даты / времени выходит за пределы диапазона:« 12122018 ».
Я полагаю, что проблема связана содна или обе из следующих причин:
Результирующие строки из моего текущего регулярного выражения в материализованном представлении различаются по длине (например, 12212018 8222018 962018) из-за того, что мое регулярное выражение удаляет все нецелые символы,Даты 6, 7 или 8 цифр.
В результате я еще не смог найти способ вставить разделитель между месяцем / днем /значения года.
Есть ли способ изменить эти выходные строки на формат даты без изменения моего регулярного выражения?
Если нетКак я могу изменить свое регулярное выражение для извлечения этих значений?
Имейте в виду, что дата, которую я ищу в исходном тексте, отформатирована как 01.12.2008 и также не учитываетведущие 0 в днях или месяцах.Кроме того, есть другая дата, предшествующая целевой дате в тексте, отформатированном таким же образом.
Вот пример исходного текста:
PLACEHOLDER TEXT ДЛЯ УДАЛЕННОГО ПЕРСОНАЛА BLAH BLAH BLAH**** Loremipsum 28.11.2008 16:21:37 **** 1 из 2 Номер разрешения на получение информации об объекте: 12-34-56789 Наименование объекта: Dolor sit amet-consectetur Адрес: 123 Fake Street City, Zip: adipiscing elit12345 РЕЗУЛЬТАТ: sed Do Eiusmod темп: до 8:00 утра Дата повторного осмотра: 12/4/2018 Тип: Материал типа бла и т. д.: Dolor sit amet-consectetur ...
Где «Дата повторной проверки: 12/4/2018» - это то, что мне нужно.
Я на Postgres 11.