Daniel: Wochentage auf Deutsch in MySQL's date_format?

Hallo alle zusammen,

Ich habe hier einen Query, mit dem ich mir gleich ein korrekt formatiertes Datum geben lasse:

<schnipp>
DATE FORMAT(reg_date,'%W, %d.%m.%y %H:%i') AS reg_date
<schnapp>

%W gibt mir einen ausgeschriebenen Wochentag zurück: Monday, Tuesday etc.

Meine Frage ist jetzt: Kann ich MySQL irgendwie dazu bringen,
mir diese Tage auf Deutsch zu liefern?

Vielen Dank für eure Hilfe im voraus,
Grüße,
Daniel

  1. setlocale('LC_TIME','de_DE');
    echo strftime('%A').', den' .date('d.m.Y H:i:s').'Uhr.';

    ausgabe:
    Montag, den 17.12.2004 11:40:43 Uhr

    ich habe es noch nicht ausprobiert, sollte aber funktionieren, laut Internet World 01.05

    1. setlocale('LC_TIME','de_DE');
      echo strftime('%A').', den' .date('d.m.Y H:i:s').'Uhr.';

      hi,
      damit gibst du aber das aktuelle datum im deutschen format mit dt. wochentag aus. und zwar über php, nicht über sql.

      genau das will ich aber vermeiden.
      ich habe ein mysql-datetime feld YYYY-MM-DD HH:MM:SS und das soll von meinem query direkt zu WOCHENTAG, den D.M.YY formatiert werden, ohne das ich zum formatieren noch php bemühen muss.

      kennt jemand diesen weg über mysql?

      grüße,
      daniel

    2. Hallo,

      setlocale('LC_TIME','de_DE');
      echo strftime('%A').', den' .date('d.m.Y H:i:s').'Uhr.';
      ich habe es noch nicht ausprobiert, sollte aber funktionieren, laut Internet World 01.05

      bei mir funktioniert es zwar, php beschwert sich aber über die Anführungszeichen beim ersten Parameter von setlocale (der soll laut http://www.php.net/setlocale eine Konstante sein) - Daniel wollte aber wissen, wie man mysql die deutschen Wochentage entlocken kann ...

      Grüße aus Nürnberg
      Tobias

  2. yo,

    Meine Frage ist jetzt: Kann ich MySQL irgendwie dazu bringen,
    mir diese Tage auf Deutsch zu liefern?

    machst du die ausgabe über PHP oder direkt an einer mysql konsole ? wie auch immer ist die frage, ob du was an den einstellungen ändern kannst. wenn das nichtz der fall ist, du also kein zugriff auf die konfiguration des mysql servers hast oder der php dateien, dann bleibt dir noch die möglichkeit das "per hand" ausgeben zu lassen. dies solltest du am besten mit CASE erreichen. check mal das mysql manuell dafür.

    Ilja

    1. Hallo, Ilja!

      dies solltest du am besten mit CASE erreichen.

      wozu so aufwändig?

      <?php
      $weekday_ger = array('Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Sonnabend');
      echo $weekday_ger[date("w")];
      ?>

      freundl. Grüsse aus Berlin, Raik

      1. yo,

        wozu so aufwändig?

        weil er es nicht mit php gelöst haben will ?

        Ilja

        1. Hallo, Ilja!

          wozu so aufwändig?
          weil er es nicht mit php gelöst haben will ?

          ach, ich dachte, du meinst php. allerdings ist die von tobias gefundene lösung so aufwändig, wass ich trotzdem die php-lösung bevorzugen würde.

          freundl. Grüsse aus Berlin, Raik

    2. Hallo,

      dies solltest du am besten mit CASE erreichen. check mal das mysql manuell dafür.

      nachdem mich das auch mal interessiert hätte, habe ich mal nachgeschaut:
      Die Suche nach 'case' hat http://dev.mysql.com/doc/mysql/de/Control_flow_functions.html#IDX1117 ausgespuckt - beim Basteln ist dann das rausgekommen:

      SELECT
        CONCAT(
          CASE DATE_FORMAT([spalte],'%w')
            WHEN 0 THEN 'Sonntag'
            WHEN 1 THEN 'Montag'
            WHEN 2 THEN 'Dienstag'
            WHEN 3 THEN 'Mittwoch'
            WHEN 4 THEN 'Donnerstag'
            WHEN 5 THEN 'Freitag'
            WHEN 6 THEN 'Samstag'
            ELSE 'was anderes' END,
          ', den ',
          DATE_FORMAT([spalte],'%d.%m.%Y')
        ) as datum
       FROM [tabelle]

      der Query spuckt datum das in der Spalte [spalte] steht in der Form
        Wochentag, den DD.MM.YYYY
      aus (um den Wochentag und das Datum zu verbinden war noch ein CONCAT nötig) - ich weiß allerdings nicht, inwiefern sich das auf die Geschwindigkeit der Abfrage auswirkt.

      Grüße aus Nürnberg
      Tobias

      1. yo,

        ich weiß allerdings nicht, inwiefern sich das auf die Geschwindigkeit der Abfrage auswirkt.

        sieht doch sehr schick aus deine lösung. die geschwindigkeit wird nicht sonderlich unter den funktionen leiden. viel schlimmer sind bei datenbanken in aller regel full scans, Joins über grosse datenmengen oder bedingungen ohne einen entsprechenden index. deine lösung wirkt sich aber "nur" auf die ausgabe der daten aus, die ohnehin ausgewählt werden würde, sprich die anzahl der datensätze bleibt dadurch erhalten und sortiert werden muss dadurch auch nicht zusätzlich. alles tutti...

        Ilja