W Oracle Database możesz użyć fm
(tryb wypełnienia) modyfikator formatu, aby pominąć wszystkie wiodące zera, które mogą być zastosowane do daty. Ten modyfikator formatu eliminuje dopełnienie, które obejmuje wiodące zera i końcowe spacje.
Aby użyć fm
modyfikator formatu, uwzględnij go w modelu formatu podczas określania sposobu formatowania dat. Na przykład przy użyciu TO_CHAR()
funkcja formatowania dat lub w parametrach NLS, takich jak NLS_DATE_FORMAT
parametr podczas ustawiania formatu daty dla bieżącej sesji.
Przykład
Oto przykład do zademonstrowania:
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;
Wynik:
Without fm With fm _____________ __________ 01-08-09 1-8-9
Widzimy, że oryginalny wynik (bez fm
modyfikator) zwraca wiodące zera dla wszystkich części daty. W tym przypadku fm
modyfikator pomijał wiodące zero we wszystkich trzech częściach daty.
fm
modyfikator wpływa na wynik tylko wtedy, gdy faktycznie w wyniku znajdują się wiodące zera.
Oto data zawierająca części dat, które zajmują dwie cyfry i dlatego nie mają wiodących zer:
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;
Wynik:
Without fm With fm _____________ __________ 01-12-29 1-12-29
Jak określić tryb wypełniania tylko w niektórych częściach daty
Powyższy przykład pominął wiodące zero we wszystkich częściach daty. Z dnia, miesiąca i roku usunięto wiodące zero. Dzieje się tak, ponieważ gdy umieścimy pojedynczy fm
na początku modelu formatu pomija wszystkie kolejne wiodące zera w wyniku.
Załóżmy, że chcemy tylko usunąć początkowe zero z dnia i miesiąca, ale zachować je w roku. W takim przypadku możemy wykonać następujące czynności:
SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-MM-fmYY')
FROM DUAL;
Wynik:
1-8-09
fm
modyfikator w zasadzie działa jak przełącznik. Gdy dodasz jeden, pomija zera do końca lub do momentu napotkania innego fm
modyfikator. Jeśli istnieje drugi fm
modyfikatora, to wiodące zera nie są pomijane poza tym punktem i tak dalej.
Oto, co się dzieje, gdy dołączymy trzy fm
modyfikatory – jeden przed każdą częścią daty:
SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-fmMM-fmYY')
FROM DUAL;
Wynik:
1-08-9
W tym przypadku fm
modyfikator był w zasadzie włączony, a następnie wyłączony, a następnie ponownie włączony.
Parametry NLS
Możesz także określić tryb wypełniania w parametrach NLS, takich jak NLS_DATE_FORMAT
parametr podczas ustawiania formatu daty dla bieżącej sesji.
Przykład:
ALTER SESSION SET NLS_DATE_FORMAT = 'fmDD-MM-fmRR';
SELECT DATE '2009-08-07' FROM DUAL;
Wynik:
7-8-09