В Oracle Database, когато използвате TO_CHAR()
функция за връщане на името на деня от дата, запълването ще бъде добавено към името на деня, ако е по-кратко от най-дългото валидно име на деня за дадения език и календар.
Е, това е поведението по подразбиране. Можете обаче да промените това, ако желаете.
За да потиснете това запълване, всичко, което трябва да направите, е да добавите предварително елемента за формат на името на деня с fm
.
Пример
Да предположим, че изпълняваме следния код:
SELECT
TO_CHAR(date '2030-03-08', 'Day, DD Month YYYY')
FROM DUAL;
Резултат:
Friday , 08 March 2030
Можем да видим, че крайните интервали са добавени към името на деня и името на месеца.
Можем да използваме fm
модификатор на формат за потискане на това пространство:
SELECT
TO_CHAR(date '2030-03-08', 'fmDay, DD Month YYYY')
FROM DUAL;
Резултат:
Friday , 08 March 2030
Проблемът е решен.
Забележете, че това има и страничната полза от потискането на крайните интервали от името на месеца.
Той също така потисна водещата нула от номера на деня.
Можем да използваме множество fm
модификатори, за да бъдем по-конкретни за това кое запълване искаме да потиснем. Всеки fm
в нашия формат модел включва и изключва режима на запълване.
Да предположим, че искаме да потиснем крайните интервали от имената на дните и месеца, но искаме да запазим водещата нула на номера на деня. В този случай можем да направим следното:
SELECT
TO_CHAR(date '2030-03-08', 'fmDay, fmDD fmMonth YYYY')
FROM DUAL;
Резултат:
Friday , 08 March 2030
Причината да използваме трети fm
(пред MONTH
) е защото вторият fm
активира повторно подпълване за всички следващи елементи на формат, което ще доведе до запазване на крайните интервали за месеца.
Ето какво имам предвид:
SELECT
TO_CHAR(date '2030-03-08', 'fmDay, fmDD Month YYYY')
FROM DUAL;
Резултат:
Friday, 08 March 2030
В този случай допълването беше потиснато от името на деня и след това беше активирано отново за номера на деня, месеца и годината.
За щастие можем да добавим толкова fm
модификатори, както са ни необходими, за да постигнем желания резултат.