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

So formatieren Sie den Monat in römischen Ziffern in Oracle

Oracle Database bietet uns die Möglichkeit, den Monat aus einem Datum mit römischen Ziffern zurückzugeben.

Wenn der Monat beispielsweise August ist, wäre sein Dezimalwert 08 und sein römisches Äquivalent wäre VIII.

Verwenden Sie dazu den RM oder rm format-Element in Ihrer Formatmaske. Dadurch wird der Monat mit römischen Ziffern in Groß- bzw. Kleinbuchstaben formatiert.

Die Angabe des Datumsformats kann an mehreren Stellen erfolgen.

Römische Ziffern beim Aufruf einer Funktion angeben

Hier ist ein Beispiel für die Angabe römischer Ziffern beim Formatieren eines Datums mit dem TO_CHAR(datetime) Funktion:

SELECT TO_CHAR(DATE '2035-08-11', 'DD RM YYYY') FROM DUAL;

Ergebnis:

11 VIII 2035

In diesem Fall habe ich römische Ziffern in Großbuchstaben angegeben.

Um Kleinbuchstaben anzugeben, ändern Sie einfach den RM zu rm :

SELECT TO_CHAR(DATE '2035-08-11', 'DD rm YYYY') FROM DUAL;

Ergebnis:

11 viii 2035

Siehe Liste der Datetime-Formatelemente in Oracle für eine vollständige Liste der Formatelemente, die zum Formatieren von Datetime-Werten verwendet werden können.

Römische Ziffern für die gesamte Sitzung angeben

Alternativ können Sie das Datumsformat für Ihre gesamte Sitzung festlegen. Dies kann nützlich sein, wenn Sie viele Funktionsaufrufe ausführen müssen, die das Datum zurückgeben.

Es gibt drei relevante Parameter:NLS_DATE_FORMAT , NLS_TIMESTAMP_FORMAT und NLS_TIMESTAMP_TZ_FORMAT .

Diese Parameter haben Standardwerte, die von NLS_TERRITORY abgeleitet werden -Parameter (der einen vom Betriebssystem abhängigen Standardwert hat). Sie können jedoch bei Bedarf jeden dieser Parameter für die aktuelle Sitzung aktualisieren.

Hier ist ein Beispiel für die Aktualisierung dieser Parameter zur Verwendung eines Datumsformats, das römische Ziffern für den Monatsteil enthält:

ALTER SESSION SET NLS_DATE_FORMAT = 'DD RM YYYY';
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'DD RM YYYY HH12:MI:SSXFF AM';
ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT = 'DD RM YYYY HH12:MI:SSXFF AM TZR';

Ergebnis:

Session altered.


Session altered.


Session altered.

Wenn ich jetzt eine Funktion aufrufe, die einen datetime-Wert zurückgibt, erhalte ich den Monat in römischen Ziffern.

Beispiel:

SELECT TO_CHAR(SYSDATE) FROM DUAL;

Ergebnis:

10 VIII 2021

Beachten Sie, dass ich SYSDATE übergeben habe zu TO_CHAR() .

Wenn ich das nicht mache, wird das NLS_DATE_FORMAT Parameter wird nicht wirksam:

SELECT SYSDATE FROM DUAL;

Ergebnis:

2021-08-10 20:04:49

Dieses Problem tritt bei anderen Datumsformaten nicht auf. Ich bin nur auf römische Ziffern gestoßen.

Eine dauerhaftere Lösung

Die obigen Beispiele sind temporäre Lösungen, um den Monat in römischen Ziffern zurückzugeben. Für eine dauerhaftere Lösung können die NLS-Parameter auf Datenbankebene, in der Initialisierungsparameterdatei oder in Umgebungsvariablen festgelegt werden. Siehe Methoden zum Festlegen von NLS-Parametern und ihre Prioritäten für Beispiele dafür sowie ihre Rangfolge im Verhältnis zueinander.