Oracle: Datumsformate en/de

Communicate

Mitglied
Hallo zusammen,

manchmal ist es zum verrückt werden und man scheitert an den einfachsten Dingen :-(

Ich habe hier ein Spalte a_date aus der Tabelle tbl_beleg.

wenn ich mir jetzt das Datum im Format "DD. MMMM YYYY" anzeigen lasse
erhalte ich "07. December 2009". Also der Monatsname auf englisch.

Ich sehe den Wald vor lauter Bäumen nicht, hat irgendwer eine Idee, wie ich aus dem englischen einen deutschen Monatsnamen machen kann?

Viele Grüße
Communicate
 
Dafür sind die Language Einstellungen der Session verantwortlich:

SQL:
SQL> select to_char(sysdate, 'MONTH') from dual;

TO_CHAR(SYSDATE,'MONTH')
---------------------------------------------------------------------------
JANUARY

SQL> alter session set NLS_LANGUAGE=GERMAN;

Session altered.

SQL> select to_char(sysdate, 'MONTH') from dual;

TO_CHAR(SYSDATE,'MONTH')
---------------------------------------------------------------------------
JANUAR
 
Zuletzt bearbeitet von einem Moderator:
Vielen Dank für die schnelle Rückmeldung.

Aber das geht so leider nicht.

In meinem speziellen Fall muss hier direkt in der GUI arbeiten (infomaker 10),
so dass ich die alter session m.E. nicht ändern kann...

Gibt´s noch nen anderen Weg?

Viele Grüße
Communicate
 
Aber sicher ;-)

SQL:
SQL> SELECT to_char(sysdate, 'MONTH', 'NLS_DATE_LANGUAGE = GERMAN') FROM dual;

TO_CHAR(SYSDATE,'MONTH','NLS_D
---------------------------------------------------------------------------
JANUAR

1 row selected.

SQL> SELECT to_char(sysdate, 'MONTH', 'NLS_DATE_LANGUAGE = ITALIAN') FROM dual;

TO_CHAR(SYSDATE,'MONTH','NLS_D
---------------------------------------------------------------------------
GENNAIO

1 row selected.
 
Zuletzt bearbeitet von einem Moderator:
hey, prima, geht in die richtige richtung.

Nur folgender Code

Code:
to_char(mahnlauf.mahn_datum, 'Day', 'NLS_DATE_LANGUAGE = GERMAN') ||  to_char(mahnlauf.mahn_datum, 'MONTH', 'NLS_DATE_LANGUAGE = GERMAN') as test

Bringt mir jetzt "Mittwoch Januar" als ergebnis.

Es sollte aber eigentlich "7. Januar" kommen !

Magst Du noch mal schauen? :)
 
Zuletzt bearbeitet von einem Moderator:
so, fast perferkt.

Vielen Dank für den Link!

Die Anzeige des Datums erfolgt jetzt leide rnoch wie folgt:

08. JANUAR 2009

Also JANUAR in Großbuchstaben und ein paar Leerzeichen zum 2009.

Kann man das auch noch ändern?

Viele Grüße
Communicate
 
Auch dafür gibt es eine einfache und geniale Lösung:

SQL:
SQL> select to_char(sysdate, 'DD. FMMonth YYYY') as datum from dual;

DATUM
---------------------------------------------------------------------------
08. Januar 2009

Das "Fm" vor dem Month ist ein "Format Model Modifier" und ist ungefähr das gleiche wie eine TRIM() Funktion um den Monat. Es werden also alle Leerzeichen entfernt. Die Leerzeichen fügt Oracle per Default ein, damit alle Monatsnamen gleich lang werden (warum auch immer...).
Genial ist, dass sich die Schreibweise des Monats durch das Format von "Month" anpassen lässt. Versuchs mal mit "MONTH", "Month", und "month"...

SQL:
select to_char(sysdate, 'DD. FMMonth YYYY') as datum from dual;
08. Januar 2009
select to_char(sysdate, 'DD. FMmonth YYYY') as datum from dual;
08. januar 2009
select to_char(sysdate, 'DD. FMMONTH YYYY') as datum from dual;
08. JANUAR 2009
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück