Monatsnamen in deutsch

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

SchneiderH
**
Beiträge: 39
Registriert: Mi, 14.03.2007 13:39

Monatsnamen in deutsch

Beitrag von SchneiderH »

Ich habe eine Abfrage, die mir den Monatsnamen auf Basis eines Datum-Wertes der zugrundeliegenden Tabelle ausgibt. Hierfür verwende ich folgende Anweisung im SQL-String:

... MONTHNAME("Datum") AS "Monat" ...

Allerdings werden mit dieser Funktion die Monatsnamen in Englisch ausgegeben. Gibt es eine Möglichkeit, die Monatsnamen von einem Datums-Wert in Deutsch zu bekommen?
Herbie
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Monatsnamen in deutsch

Beitrag von Barlee »

Hallo SchneiderH,

m.W. kann man so etwas normalerweise mit dem Befehl SET DATABASE COLLATION = "GERMAN" einstellen. Allerdings hatte ich damit keinen Erfolg. Hat das evtl. schon einmal jemand auf diesem Weg in der HSQLDB hinbekommen???

Solange könntest Du mit CASE WHEN die englischen durch die deutschen Bezeichnungen ersetzen:

Code: Alles auswählen

case 
when MONTHNAME( "Datum" )='December' Then 'Dezember' 
when MONTHNAME( "Datum" )='...' Then '...' 
when MONTHNAME( "Datum" )='...' Then '...' 
...
...
...

END as Monat_DT
Gruß Barlee
SchneiderH
**
Beiträge: 39
Registriert: Mi, 14.03.2007 13:39

Re: Monatsnamen in deutsch

Beitrag von SchneiderH »

Hallo Barlee,

danke für den Tipp. Allerdings funktioniert mit der HSQLDB von Base die CASE WHEN Anweisung nicht. Erfolg habe ich nur mit der Anweisung CASEWHEN(Bedingung,Wert1,Wert2). Mit dieser Anweisung bekommt man eine ganz schöne Schachtelung. Bei den eingebauten Funktionen fehlt irgend wie eine Format-Funktion.

Für's erste werde ich wohl auf die deutschen Monatsnamen verzichten. Ist eh nur Schönheit für die Ausgabe und beeinträchtigt die Funktionalität nicht.
Herbie
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Monatsnamen in deutsch

Beitrag von Barlee »

Hallo SchneiderH,

CASE WHEN funktioniert in der HSQLDB. Du musst unter 'Bearbeiten' nur "SQL Kommando direkt ausführen" auswählen.
Hatte ich vergessen zu schreiben.

Gruß Barlee
SchneiderH
**
Beiträge: 39
Registriert: Mi, 14.03.2007 13:39

Re: Monatsnamen in deutsch

Beitrag von SchneiderH »

Hallo Barlee,

danke für den Hinweis. Nun ist mir dieses Symbol in der Symbolleiste auch klar geworden. Ich habe die CASE WHEN Anweisung noch etwas abgeändert, da es aus Performance-Gründen sicher besser ist, auf Zahlen als auf ASCCII-Text zu prüfen. Hier die leicht modifizierte Form:

Code: Alles auswählen

CASE
WHEN MONTH("Datum") = 1 THEN 'Januar'
WHEN MONTH("Datum") = 2 THEN 'Februar'
WHEN MONTH("Datum") = 3 THEN 'März'
WHEN MONTH("Datum") = 4 THEN 'April'
WHEN MONTH("Datum") = 5 THEN 'Mai'
WHEN MONTH("Datum") = 6 THEN 'Juni'
WHEN MONTH("Datum") = 7 THEN 'Juli'
WHEN MONTH("Datum") = 8 THEN 'August'
WHEN MONTH("Datum") = 9 THEN 'September'
WHEN MONTH("Datum") = 10 THEN 'Oktober'
WHEN MONTH("Datum") = 11 THEN 'November'
WHEN MONTH("Datum") = 12 THEN 'Dezember'

ELSE 'falscher Monatswert'

END AS "DatumDT"
Der ELSE-Zweig ist nur aus Vollständigkeitsgründen vorhanden und sollte nie durchlaufen werden.

Ich könnte mir vorstellen, dass derartige Funktionalitäten für viele Base-Anfänger (wie mich) interessant sind. Gibt es hierfür eine Sammlung (z.B. in OO-Wicki)?
Herbie
Antworten