Datumsformat

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datumsformat

    Hallo,

    ich habe eine SQL-Abfrage, wo unteranderem das Datum mit abgefragt wird. Mit Hilfe des DATE_FORMAT's wird das Datum in der Form Tag & Monat & Jahr ausgegeben.

    PHP-Code:
    $select mysql_query("SELECT wert_a, wert_b, DATE_FORMAT(termin_a, '%d.%m.%Y'), DATE_FORMAT(termin_b, '%d.%m.%Y'), wert_c FROM ".$sql_tabelle." WHERE wert_a = '".$fpn."'"); 
    Bis hierhin klappt alles, ein Problem ergibt sich nur, wenn die beiden Termine in ein Array (eine Variable) geschrieben werden sollen, siehe folgend:
    PHP-Code:
      while($row mysql_fetch_object($select)){
          
    $wert_a $row->wert_a;
          
    $wert_b $row->wert_b;
          
    $termin_a $row->termin_a;
          
    $termin_b $row->termin_b;
          
    $wert_c $row->wert_c;
      } 
    Bis auf die beiden Termine wird alles richtig ausgegeben. Wie kann ich denn das formatierte Datum in PHP richtig ausgeben lassen?

  • #2
    zuerstmal: brich deinen code um.
    zweitens: select date_format(...) as spaltenname
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      super, vielen dank

      Kommentar


      • #4
        wie kann man das ganze in deutschen Format updaten?

        PHP-Code:
        mysql_query("SELECT DATE_FORMAT(termin_a, '%d.%m.%Y') AS termin_a ... FROM testtabelle); 
        klappt ja schon ganz gut, das ganze würde ich natürlich gerne auch in diesen Format abspeichern, also irgendwas die Richtung:

        PHP-Code:
        mysql_query("UPDATE testtabelle SET DATE_FORMAT(termin_a, '%d.%m.%Y') AS termin_a ... ); 
        leider klappt dies so nicht. Kann jemand zufällig weiterhelfen?

        Lieben Gruß

        Kommentar


        • #5
          Die Frage ist warum machst du das? Ansonstens UPDATE Syntax in der Doku nachlesen.

          Kommentar


          • #6
            Ich habe eine Inputfeld, in welches man ein Datum eintragen kann. Da man im Deutschen gewöhnlich die Form "Tag.Monat.Jahr" wählt würde ich dies auch gerne so in der Datenbank speichern.

            Mit der SQL_Anweisung:
            PHP-Code:
            mysql_query("UPDATE testtabelle SET termin_a = '24.12.2008' WHERE ... ); 
            wird stattdessen in der Datenbank 20.12.2024 gespeichert.

            Kommentar


            • #7
              Nein, so macht man nicht. Lokal spezifisches Format wird bei der Ausgabe zurecht formatiert. In die DB gehören Daten in die dafür vorgesehenen Formate. Wenn du termin_a als DATETIME deklariert hast, dann bitte nur in dem Format: YYYY-MM-DD HH:MM:SS ablegen, alles andere ist unfug.

              Kommentar


              • #8
                Das Format in der Datenbanktabelle kann ja beibehalten werden, das will ich ja gar nicht ändern.

                Ich suche nur eine Möglichkeit, das Datum, welches in der Form Tag.Monat.Jahr vorliegt, richtig in der Datenbank zu speichern.
                Es sollte also irgendwas sein, dass das Datum im Format "Tag.Monat.Jahr" übernimmt, in das Format "Jahr.Monat.Tag" transformiert und anschließend in der Datenbank speichert.

                Kommentar


                • #9
                  explode, array_reverse, implode wäre der naive Ansatz, strptime schon etwas elaborierter und richtig elegant ist, wenn man dieses Problem erst gar nicht hat.

                  Kommentar


                  • #10
                    ein datum in der DB ist aber nur sinnvoll im Datumsformat abzulegen, heisst die Tabellenspalte sollte unbedingt das Datumsformat haben.
                    Also beherzige lieber den Ratschlag und ändere etwas an der DB und formatiere Dein Datum in den ausgabemedien so wie Du es haben möchtest, ansonsten wirst Du sicher in weitere Probleme laufen
                    Beantworte nie Threads mit mehr als 15 followups...
                    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                    Kommentar


                    • #11
                      ok danke für Eure Hilfe ich habe es aber herausbekommen:
                      PHP-Code:
                      UPDATE testtabelle SET termin_a = (SELECT STR_TO_DATE('24.12.2008'GET_FORMAT(DATE,'EUR'))) WHERE ... 

                      Kommentar


                      • #12
                        sorry, hab nicht den ganzen post gelesen...
                        Dein Problem ist gelöst, doch hast Du nun keinerlei Fehlerbehandlung, das könnte Dich wieder vor Probleme stellen
                        Beantworte nie Threads mit mehr als 15 followups...
                        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                        Kommentar


                        • #13
                          Original geschrieben von onemorenerd
                          ... und richtig elegant ist, wenn man dieses Problem erst gar nicht hat.
                          Und wie macht man es "richtig elegant"?

                          In der Applikation eine Vermittlerschicht einbauen, die die verschiedenen Input- / Outputformate konvertiert? Also unabhängig von den gerade benutzen Datenquellen (HTML, XML, MySQL, Excel ...)?

                          Existiert dafür ein Pattern, oder meintest Du etwas anderes, onmorenerd?

                          Kommentar


                          • #14
                            Da gibt es keine Patentlösung. Ich würde allerdings dem User kein Textfeld servieren, wo er ein Datum in einem bestimmten Format eintragen soll. Dazu nehme ich einen Datepicker oder drei Dropdowns für Tag, Monat und Jahr. Da kann der User vom Format her schon mal nichts falsch machen. Man muß die Werte lediglich auf Plausibilität prüfen (30. Februar und sowas).
                            Das Eintragen in die DB geht ohne jegliche Umwandlung .... SET col = '$year-$month-$day'. Man muß nur wissen, dass MySQL es im Format yyyy-mm-dd erwartet.

                            Kommentar


                            • #15
                              Original geschrieben von onemorenerd
                              Ich würde allerdings dem User kein Textfeld servieren, wo er ein Datum in einem bestimmten Format eintragen soll. Dazu nehme ich einen Datepicker oder drei Dropdowns für Tag, Monat und Jahr. Da kann der User vom Format her schon mal nichts falsch machen.
                              OK. Aber bei einer Fließkommazahl sieht es schon anders aus, oder würdest Du dann auch zwei Input-Felder für Vor- und Nachkomma-Stelle draus machen?
                              Original geschrieben von onemorenerd
                              Das Eintragen in die DB geht ohne jegliche Umwandlung .... SET col = '$year-$month-$day'. Man muß nur wissen, dass MySQL es im Format yyyy-mm-dd erwartet.
                              Ist aber unflexibel, da man sich genau auf das MySQL-Format festlegen muss.

                              Ich hatte gefragt, weil ich eine Webanwendung (HTML/MySQL) betreue und mittlerweile die verschiedensten Konvertierungen benötigt werden:
                              1. (klassisch) HTML -> MySQL und ebenso MySQL -> HTML
                              2. Import von Datensätzen aus Excel in MySQL
                              3. Export von MySQL -> Excel / CSV
                              4. Export von MySQL -> XML

                              Bei Punkt 1 und 2 können Benutzer sehr kreativ sein

                              Naja, je mehr Anforderungen hinzukommen, desto mehr reduntanten Code schreibe ich - daher meine Frage.

                              Kommentar

                              Lädt...
                              X