Нам не хватает важной информации: что именно вы храните в этом столбце? Я знаю, это строка, которая представляет значение даты, но - в каком формате?
Глядя на опубликованный вами код, кажется, что значение даты занимает первые 9 символов этой строки, поэтому я предполагаю , что оно равно dd-mon-yy
.
Если это так , затем посмотрите на следующий пример:
SQL> alter session set nls_date_language = 'english';
Session altered.
SQL> with wdj (dff_detail) as
2 (select '06-mar-20 20:31' from dual union all
3 select '25-aug-19 13:30' from dual
4 )
5 select
6 substr(dff_detail, 1, 9) sbstr,
7 to_date(substr(dff_detail, 1, 9), 'dd-mon-yy') dsbstr,
8 to_char(to_date(substr(dff_detail, 1, 9), 'dd-mon-yy'), 'yyyymm') ymdbstr
9 from wdj;
SBSTR DSBSTR YMDBST
------------------------------------ -------- ------
06-mar-20 06.03.20 202003
25-aug-19 25.08.19 201908
SQL>
- строки # 1 - 4: пример данных
- строка № 6: подстрока первых 9 символов
- строка № 7: подстрока преобразована в дату с использованием маска соответствующего формата ! Это то, что вам не хватает в вашем коде
- строка # 8: дата отображается в формате
yyyymm
(с помощью функции to_char
)
Конечно, это не будет работать, если любое значение не соответствует предполагаемому мной формату (например, mar-06-20
), если оно содержит недопустимые значения (например, 68-abc-83
) и c.
Вывод? Не храните даты в виде строк.