Как насчет двухэтапной процедуры?
Сначала получите значение:
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
в дату, добавив последнюю цифру текущего года (это то, что делает 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 символов, потому что вы потеряете последнюю цифру
Обратите внимание, что вам, вероятно, не нужно использовать параметр nls_date_language
; Да, так как моя база данных работает на хорватском языке, а наш формат сильно отличается от вашего.
person
Littlefoot
schedule
05.02.2020