В Oracle Database можете да използвате fm
(режим на запълване) модификатор на формата за потискане на всички водещи нули, които могат да бъдат приложени към дата. Този модификатор на формат потиска допълването, което включва начални нули и крайни празни места.
За да използвате fm
модификатор на формат, включете го във вашия модел на формат, когато укажете как трябва да се форматират датите. Например, когато използвате TO_CHAR()
функция за форматиране на дати или в NLS параметри като NLS_DATE_FORMAT
параметър, когато задавате формата на датата за текущата ви сесия.
Пример
Ето пример за демонстрация:
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;
Резултат:
Without fm With fm _____________ __________ 01-08-09 1-8-9
Можем да видим, че оригиналният резултат (без fm
модификатор) връща водещи нули за всички части за дата. В този случай fm
модификаторът потисна водещата нула и на трите части за дата.
fm
модификаторът засяга резултата само ако действително има водещи нули в резултата.
Ето дата, която включва части от дата, които заемат две цифри и следователно нямат водещи нули:
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;
Резултат:
Without fm With fm _____________ __________ 01-12-29 1-12-29
Как да посочите режим на запълване само на някои части от дата
Горният пример потисна водещата нула на всички части от датата. Водещата нула беше премахната от деня, месеца и годината. Това е така, защото когато поставим единичен fm
в началото на модела на форматиране, той потиска всички последващи водещи нули в резултата.
Да предположим, че искаме само да премахнем водещата нула от деня и месеца, но да я запазим за годината. В този случай можем да направим следното:
SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-MM-fmYY')
FROM DUAL;
Резултат:
1-8-09
fm
модификаторът основно работи като превключвател. Когато включите едно, той потиска нулите до края или докато срещне друг fm
модификатор. Ако има втори fm
модификатор, тогава водещите нули не се потискат след тази точка и т.н.
Ето какво се случва, когато включим три fm
модификатори – по един преди всяка част от датата:
SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-fmMM-fmYY')
FROM DUAL;
Резултат:
1-08-9
Така че в този случай fm
модификаторът беше основно активиран, след това деактивиран, след това разрешен отново.
NLS параметри
Можете също да посочите режим на запълване във вашите NLS параметри, като NLS_DATE_FORMAT
параметър, когато задавате формата на датата за текущата ви сесия.
Пример:
ALTER SESSION SET NLS_DATE_FORMAT = 'fmDD-MM-fmRR';
SELECT DATE '2009-08-07' FROM DUAL;
Резултат:
7-8-09