Если вам нужно сохранить символы #
, единственный шанс, который я вижу, это импортировать их в столбец varchar
.
Если вам абсолютно необходима информация в качестве даты, вам может не понравиться представление, которое выполняет преобразование и выбирает только те строки, в которых в столбце нет #
.
Что-то вроде
SELECT to_date(dob,'YYYY-MM-DD') as dob_date
FROM your_table
WHERE substr(dob,6,2) <> '##';
Если вы делаете это на регулярной основе, вы можете рассмотреть индекс для этого выражения, чтобы ускорить выбор:
CREATE INDEX dob_check ON your_table( substr(dob,6,2) );
Обратите внимание, что выражение в вашем выборе должно совпадать с точно выражением в индексе, чтобы его можно было использовать в планировщике запросов.
Если вы хотите «преобразовать» данные в действительную дату во время поиска, вы можете сделать что-то вроде этого:
SELECT case
case when substr(dob,6,2) = '##' then to_date(substr(dob,1,5)||'01-01', 'YYYY-MM-DD')
else to_date(dob,'YYYY-MM-DD')
end as dob_date
FROM your_table;