V databázi Oracle můžete použít fm
(režim výplně) modifikátor formátu pro potlačení jakýchkoli úvodních nul, které by mohly být aplikovány na datum. Tento modifikátor formátu potlačuje výplň, která obsahuje úvodní nuly a koncové mezery.
Chcete-li použít fm
modifikátor formátu, zahrňte jej do modelu formátu při určování způsobu formátování dat. Například při použití TO_CHAR()
k formátování dat nebo v parametrech NLS, jako je NLS_DATE_FORMAT
při nastavování formátu data pro vaši aktuální relaci.
Příklad
Zde je příklad k demonstraci:
SELECT
TO_CHAR(DATE '2009-08-01', 'DD-MM-YY') AS "Without fm",
TO_CHAR(DATE '2009-08-01', 'fmDD-MM-YY') AS "With fm"
FROM DUAL;
Výsledek:
Without fm With fm _____________ __________ 01-08-09 1-8-9
Vidíme, že původní výsledek (bez fm
modifikátor) vrací úvodní nuly pro všechny části data. V tomto případě fm
modifikátor potlačil úvodní nulu ve všech třech částech data.
fm
modifikátor ovlivní výsledek pouze tehdy, pokud jsou ve výsledku skutečně úvodní nuly.
Zde je datum, které obsahuje části data, které zabírají dvě číslice, a proto nemají úvodní nuly:
SELECT
TO_CHAR(DATE '2029-12-01', 'DD-MM-YY') AS "Without fm",
TO_CHAR(DATE '2029-12-01', 'fmDD-MM-YY') AS "With fm"
FROM DUAL;
Výsledek:
Without fm With fm _____________ __________ 01-12-29 1-12-29
Jak určit režim vyplnění pouze u některých částí data
Výše uvedený příklad potlačil úvodní nulu na všech částech data. Ze dne, měsíce a roku byla odstraněna úvodní nula. Je to proto, že když umístíme jeden fm
na začátku formátovacího modelu potlačí vše následné úvodní nuly ve výsledku.
Předpokládejme, že chceme pouze odstranit úvodní nulu ze dne a měsíce, ale zachovat ji v roce. V tomto případě můžeme provést následující:
SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-MM-fmYY')
FROM DUAL;
Výsledek:
1-8-09
fm
modifikátor v podstatě funguje jako přepínač. Když zahrnete jedničku, potlačí nuly až do konce, nebo dokud nenarazí na další fm
modifikátor. Pokud existuje druhý fm
modifikátor, pak nejsou úvodní nuly za tímto bodem potlačeny a tak dále.
Zde je to, co se stane, když zahrneme tři fm
modifikátory – jeden před každou částí data:
SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-fmMM-fmYY')
FROM DUAL;
Výsledek:
1-08-9
Takže v tomto případě fm
modifikátor byl v zásadě povolen, poté zakázán a poté znovu povolen.
Parametry NLS
Můžete také zadat režim plnění v parametrech NLS, jako je NLS_DATE_FORMAT
parametr při nastavování formátu data pro vaši aktuální relaci.
Příklad:
ALTER SESSION SET NLS_DATE_FORMAT = 'fmDD-MM-fmRR';
SELECT DATE '2009-08-07' FROM DUAL;
Výsledek:
7-8-09