Seite 1 von 1

SELECT dayname() auf deutsch

Verfasst: Fr, 09. Jul 2021 17:31
von Manfred

Code: Alles auswählen

SELECT  DAYNAME(datum) AS wochentag
das liefert mir den Namen des Wochentags, aber in englisch. Was muß ich tun, um den in deutsch zu erhalten?

Re: SELECT dayname() auf deutsch

Verfasst: Fr, 09. Jul 2021 21:07
von Marcus Herz
Klingt nach postgres, meines wissens gibt es da nichts

Re: SELECT dayname() auf deutsch

Verfasst: Sa, 10. Jul 2021 0:13
von Werner_Bayern
Die Funktion CDow() benutzen?

Re: SELECT dayname() auf deutsch

Verfasst: Sa, 10. Jul 2021 5:40
von AUGE_OHR
hi,

ich habe keine Function DAYNAME() in Postgresql gefunden ... aber in MySQL

für Postgresql gibt es die Function to_char()
https://www.postgresql.org/docs/9.1/fun ... TIME-TABLE

Code: Alles auswählen

SELECT to_char(timestamp '2020-12-16 10:41:35', 'Day') AS "Day";
---
es gibt verschiedene "time-String" mit

Code: Alles auswählen

SET datestyle TO 

Code: Alles auswählen

ISO 	        ISO-8601-/SQL-Standard 	1997-12-17 07:37:16-08
SQL	        traditioneller Stil     17/12/1997 07:37:16.00 PST
POSTGRES 	ursprünglicher Stil 	Wed Dec 17 07:37:16 1997 PST
German 		deutscher Stil 		17.12.1997 07:37:16.00 PST
dann gibt es noch die Timezone

Code: Alles auswählen

SET TIME ZONE 'Europe/Berlin';
p.s. IMHO kann man keine xBase Function mit SQL Statement nutzen.

Re: SELECT dayname() auf deutsch

Verfasst: Sa, 10. Jul 2021 6:17
von Wolfgang Ciriack
Klingt nach postgres, meines wissens gibt es da nichts
ich habe keine Function DAYNAME() in Postgresql gefunden ... aber in MySQL
Deswegen schreibt Manfred hier auch unter ADS. :roll:

Re: SELECT dayname() auf deutsch

Verfasst: Sa, 10. Jul 2021 6:31
von AUGE_OHR
hi,
Wolfgang Ciriack hat geschrieben: Sa, 10. Jul 2021 6:17 Deswegen schreibt Manfred hier auch unter ADS. :roll:
uuuuppps ... hatte Postgre im Thread gelesen aber nicht auf die Überschrift geachtet.

Re: SELECT dayname() auf deutsch

Verfasst: Mo, 12. Jul 2021 10:48
von nightcrawler
ADS kann kein deutsch - selbermachen:

Code: Alles auswählen

try drop function dayname_de; catch all end try;
create function dayname_de(ts timestamp)
returns string
begin
  declare @day Integer;
  @day = dayofweek(ts);
  if @day=1 then return 'Sonntag'; 
  elseif @day=2 then return 'Montag'; 
  elseif @day=3 then return 'Dienstag';  
  elseif @day=4 then return 'Mittwoch';  
  elseif @day=5 then return 'Donnerstag';  
  elseif @day=6 then return 'Freitag';  
  elseif @day=7 then return 'Samstag'; 
  else return '-unbekannt-';
  end; 
end;

select dayname_de(now()) from system.iota;

Re: SELECT dayname() auf deutsch

Verfasst: Mo, 12. Jul 2021 11:48
von Manfred
OK,
dann kann ich es auch so lassen wie es jetzt ist, ich passe das Ergebnis an. Ist ja ein DO und geht dadurch recht fix.
Schade.

Re: SELECT dayname() auf deutsch

Verfasst: Mo, 12. Jul 2021 13:22
von Werner_Bayern
Äh Manfred,

was spricht gegen CDow()?

Re: SELECT dayname() auf deutsch

Verfasst: Mo, 12. Jul 2021 13:25
von Manfred
Hi Werner,
das der ADS das nicht versteht?
Ich habe doch schon eine Funktion in der SELECT Abfrage, die liefert aber nur englisch zurück.
Jetzt durchlaufe ich das DO nachträglich nochmal und benutze da CDoW(). Da bin ich ja wieder in Xbase++ und dann klappt es.
Es gin aber darum das sofort mit einem SQL SELECT Befehl zu erschlagen

Re: SELECT dayname() auf deutsch

Verfasst: Mo, 12. Jul 2021 15:13
von Marcus Herz
Es ist traurig, dass die Entwicklung solcher DBMS in englich erfolgt, (und keiner kann sich da eine andere Sprache vorstellen) und folglich alle System Text ebenso.
Ich denk, diese Logik ist aber grundsätzlich auf dem Client besser aufgehoben. Es gibt da einfach zuviel Sprachvarianten.
Man muss froh sein, dass man das Datum verschieden formatieren kann.

Re: SELECT dayname() auf deutsch

Verfasst: Di, 13. Jul 2021 8:41
von nightcrawler
vielleicht für eine spätere Erweiterung: Der ADS kann ja auch andere Datenbanken einbinden (also: andere ADD auf demselben Server!). Ich habe für die wichtigsten Daten in deutsch(-land) Tabellen erstellt, welche ich dann über das verlinkte ADD einbinde:

Code: Alles auswählen

SELECT a.date, b.dayname FROM TabelleA
LEFT OUTER JOIN de.daynames b
ON dayofweek(a.date) = b.dayofweek;
In der Datenbank DE gibt es die Tabelle daynames mit dem Inhalt
dayofweek | dayname
1 | 'Sonntag'
2 | 'Montag'
...

Dasselbe auch für Vorwahlen, Postleitzahlen usw.