V databázi Oracle při použití TO_CHAR()
Funkce pro vrácení názvu dne z data, bude k názvu dne přidána výplň, pokud je kratší než nejdelší platný název dne pro daný jazyk a kalendář.
No, to je výchozí chování. Pokud si to však přejete, můžete to změnit.
Chcete-li toto odsazení potlačit, vše, co musíte udělat, je přidat před prvek formátu názvu dne fm
.
Příklad
Předpokládejme, že spustíme následující kód:
SELECT
TO_CHAR(date '2030-03-08', 'Day, DD Month YYYY')
FROM DUAL;
Výsledek:
Friday , 08 March 2030
Vidíme, že k názvu dne a názvu měsíce byly připojeny koncové mezery.
Můžeme použít fm
modifikátor formátu pro potlačení této mezery:
SELECT
TO_CHAR(date '2030-03-08', 'fmDay, DD Month YYYY')
FROM DUAL;
Výsledek:
Friday , 08 March 2030
Problém vyřešen.
Všimněte si, že to mělo také vedlejší výhodu v potlačení koncových mezer z názvu měsíce.
Také to potlačilo úvodní nulu z čísla dne.
Můžeme použít více fm
modifikátory, abychom byli konkrétnější ohledně toho, které výplně chceme potlačit. Každý fm
v našem modelu formátu zapíná a vypíná režim plnění.
Předpokládejme, že chceme potlačit koncové mezery u názvů dnů a měsíců, ale chceme zachovat úvodní nulu v čísle dne. V takovém případě můžeme provést následující:
SELECT
TO_CHAR(date '2030-03-08', 'fmDay, fmDD fmMonth YYYY')
FROM DUAL;
Výsledek:
Friday , 08 March 2030
Důvod, proč jsme použili třetí fm
(před MONTH
), protože druhý fm
znovu povolil výplň pro všechny následující prvky formátu, což by vedlo k tomu, že koncové mezery byly zachovány po celý měsíc.
Zde je to, co mám na mysli:
SELECT
TO_CHAR(date '2030-03-08', 'fmDay, fmDD Month YYYY')
FROM DUAL;
Výsledek:
Friday, 08 March 2030
V tomto případě bylo odsazení u názvu dne potlačeno a poté znovu povoleno pro číslo dne, měsíc a rok.
Naštěstí můžeme přidat tolik fm
modifikátory, protože potřebujeme získat požadovaný výsledek.