Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So entfernen Sie führende Nullen aus Datumsangaben in Oracle

In Oracle Database können Sie den fm verwenden (Füllmodus) Formatmodifikator, um führende Nullen zu unterdrücken, die möglicherweise auf ein Datum angewendet werden. Dieser Formatmodifikator unterdrückt das Auffüllen, das führende Nullen und nachgestellte Leerzeichen enthält.

Um den fm zu verwenden Formatmodifikator, schließen Sie ihn in Ihr Formatmodell ein, wenn Sie angeben, wie Datumsangaben formatiert werden sollen. Zum Beispiel bei Verwendung von TO_CHAR() Funktion zum Formatieren von Datumsangaben oder in NLS-Parametern wie dem NLS_DATE_FORMAT Parameter beim Festlegen des Datumsformats für Ihre aktuelle Sitzung.

Beispiel

Hier ist ein Beispiel zur Veranschaulichung:

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;

Ergebnis:

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

Wir können sehen, dass das ursprüngliche Ergebnis (ohne fm Modifikator) gibt führende Nullen für alle Datumsteile zurück. In diesem Fall der fm Modifikator hat die führende Null bei allen drei Datumsteilen unterdrückt.

Der fm modifier wirkt sich nur auf das Ergebnis aus, wenn das Ergebnis tatsächlich führende Nullen enthält.

Hier ist ein Datum, das Datumsteile enthält, die zwei Ziffern einnehmen und daher keine führenden Nullen haben:

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;

Ergebnis:

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

So legen Sie den Füllmodus nur für einige Datumsteile fest

Das obige Beispiel hat die führende Null bei allen Datumsteilen unterdrückt. Bei Tag, Monat und Jahr wurde die führende Null entfernt. Dies liegt daran, wenn wir einen einzelnen fm platzieren am Anfang des Formatmodells unterdrückt es alle nachfolgende führende Nullen im Ergebnis.

Angenommen, wir möchten nur die führende Null von Tag und Monat entfernen, sie aber für das Jahr beibehalten. In diesem Fall können wir Folgendes tun:

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

Ergebnis:

1-8-09

Der fm Modifikator funktioniert im Grunde wie ein Schalter. Wenn Sie eins einschließen, unterdrückt es Nullen bis zum Ende oder bis es auf ein anderes fm trifft Modifikator. Wenn es ein zweites fm gibt Modifikator, dann werden führende Nullen über diesen Punkt hinaus nicht unterdrückt und so weiter.

Folgendes passiert, wenn wir drei fm einfügen Modifikatoren – einer vor jedem Datumsteil:

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

Ergebnis:

1-08-9

Also in diesem Fall der fm Modifikator wurde grundsätzlich aktiviert, dann deaktiviert, dann wieder aktiviert.

NLS-Parameter

Sie können auch den Füllmodus in Ihren NLS-Parametern angeben, wie z. B. NLS_DATE_FORMAT Parameter beim Einstellen des Datumsformats für Ihre aktuelle Sitzung.

Beispiel:

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

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

Ergebnis:

7-8-09