Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да премахнете водещите нули от датите в Oracle

В 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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 11gR2 Compression Advisor =Evil

  2. Oracle.DataAccess.dll не може да бъде намерен, въпреки че съществува

  3. Обработка на ExecuteScalar(), когато не се връщат резултати

  4. Как да покажа всички привилегии на база данни на Oracle за потребител

  5. Можем ли да актуализираме стойностите на първичния ключ на таблица?