sql >> Databasteknik >  >> RDS >> Oracle

Hur man tar bort ledande nollor från datum i Oracle

I Oracle Database kan du använda fm (fyllläge) formatmodifierare för att undertrycka alla inledande nollor som kan tillämpas på ett datum. Denna formatmodifierare undertrycker utfyllnad, som inkluderar inledande nollor och efterföljande blanksteg.

För att använda fm formatmodifierare, inkludera den i din formatmodell när du anger hur datum ska formateras. Till exempel när du använder TO_CHAR() funktion för att formatera datum, eller i NLS-parametrar såsom NLS_DATE_FORMAT parameter när du ställer in datumformatet för din nuvarande session.

Exempel

Här är ett exempel att visa:

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;

Resultat:

   Without fm    With fm 
_____________ __________ 
01-08-09      1-8-9     

Vi kan se att det ursprungliga resultatet (utan fm modifierare) returnerar inledande nollor för alla datumdelar. I det här fallet, fm modifieraren undertryckte den inledande nollan på alla tre datumdelarna.

fm modifierare påverkar endast resultatet om det faktiskt finns inledande nollor i resultatet.

Här är ett datum som inkluderar datumdelar som tar upp två siffror och därför inte har inledande nollor:

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;

Resultat:

   Without fm    With fm 
_____________ __________ 
01-12-29      1-12-29    

Hur man anger fyllningsläge endast på vissa datumdelar

Ovanstående exempel undertryckte den inledande nollan på alla datumdelar. Den inledande nollan togs bort från dagen, månaden och året. Detta beror på att när vi placerar en enda fm i början av formatmodellen undertrycker den alla efterföljande inledande nollor i resultatet.

Anta att vi bara vill ta bort den inledande nollan från dagen och månaden, men behålla den på året. I det här fallet kan vi göra följande:

SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-MM-fmYY')
FROM DUAL;

Resultat:

1-8-09

fm modifierare fungerar i princip som en switch. När du inkluderar en, dämpar den nollor till slutet, eller tills den stöter på en annan fm modifierare. Om det finns en andra fm modifierare, så dämpas inte inledande nollor bortom den punkten, och så vidare.

Här är vad som händer när vi inkluderar tre fm modifierare – en före varje datumdel:

SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-fmMM-fmYY')
FROM DUAL;

Resultat:

1-08-9

Så i det här fallet, fm modifieraren var i princip aktiverad, sedan inaktiverad och sedan aktiverad igen.

NLS-parametrar

Du kan också ange fyllningsläge i dina NLS-parametrar, såsom NLS_DATE_FORMAT parameter när du ställer in datumformatet för din nuvarande session.

Exempel:

ALTER SESSION SET NLS_DATE_FORMAT = 'fmDD-MM-fmRR';

SELECT DATE '2009-08-07' FROM DUAL;

Resultat:

7-8-09

  1. AWS RDS Säkerhetskopieringsmetoder

  2. mySQL longitud och latitud fråga för andra rader inom x mile radie

  3. Intermittenta ODBC-anslutningsfel

  4. PL/SQL Gateway i R11i