Как насчет двухэтапной процедуры?
Сначала получите значение:
EXEC TOOLS GET filter.generation_depuis INTO :qstrGenerationDepuis;
, которое устанавливает элемент на 27-JANV.-2
Затем преобразуйте его в нужный формат, но сначала вы Я должен знать, какой у вас формат. Это французский, не так ли? Похоже 27th of January of
... в каком году? Что такое -2
? Это может быть любой год между 2020 и 2029 годами, поскольку длина переменной составляет 10 символов:
SQL> select to_char(date '2020-01-27', 'dd-MON-yy', 'nls_date_language = french') datum from dual;
DATUM
-----------
27-JANV.-20
^ tenth character is "2"; "0" is lost
12345678901
Если мы предположим , что это текущий год , то вы можете попробуйте что-то вроде этого:
- преобразовать строку
27-JANV.-2
в дату, добавив последний год текущего года git (это то, что делает substr
) применить to_char
к новому значению даты, 27-JANV.-20
, с маской требуемого формата
SQL> select to_char(to_date('27-JANV.-2' || substr(to_char(sysdate, 'yyyy'), -1),
2 'dd-mon-rr',
3 'nls_date_language = french'),
4 'dd/mm/yyyy') result
5 from dual;
RESULT
----------
27/01/2020
Не то, чтобы это было невозможно (очевидно), но - вы бы предпочли
- вернуть маску нужного формата из
filter.generation_depuis
- или, если это невозможно, увеличить элемент / переменную длину как минимум до 11 символов, поскольку вы потеряете последний ди git
Обратите внимание, что вам, вероятно, не нужно использовать параметр nls_date_language
; Я делаю, потому что моя база данных работает на хорватском языке, и наш формат сильно отличается от вашего.