Ankündigung

Einklappen
Keine Ankündigung bisher.

order by Problem mit Datum

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

  • order by Problem mit Datum

    einige meiner Ausgaben werden durcheinander sortiert:
    $sql = "SELECT * FROM user WHERE class='$cla' ORDER BY dauer ASC";

    Der Eintrag für die Spalte Dauer sieht so aus:
    02-03-2010

    Das seltsame dabei ist das es bei den meisten Abfragen klappt ....
    Der Feldtyp steht auf varchar(255)

    Woran liegt das - muss ich die Bindestriche entfernen oder den Feldtyp ändern?


  • #2
    Ich würde hier den Typ Date verwenden MySQL :: MySQL 5.1 Referenzhandbuch :: 11.3 Datums- und Zeittypen

    Kommentar


    • #3
      habs schon versucht, wenn ich den Feldtyp ändere gehen dabei die daten verloren:
      02-03-2010 wird dann 00-00-0000

      Zitat von ragtek Beitrag anzeigen

      Kommentar


      • #4
        hab nun nach ID geordnet, damit klappts zwar auch, würde mich aber interessieren ob das Problem an den Bindestrichen im Datum liegt.
        Bei weniger als 5 Zeilen ist noch alles richtig sortiert ...

        Kommentar


        • #5
          Ein Stringvergleich ist eben kein Datumsvergleich:

          '10.03.2010' < '9.03.2010' (weil die 9 einen höheren ASCII-Wert hat als die 1)
          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

          Kommentar


          • #6
            also müsste dazu der Feldtyp auch auf DATE ?

            Kommentar


            • #7
              also müsste dazu der Feldtyp auch auf DATE ?
              ...wie ragtek bereits sagte!
              Competence-Center -> Enjoy the Informatrix
              PHProcks!Einsteiger freundliche Tutorials

              Kommentar


              • #8
                Neue Spalte vom Typ "date" anlegen. Kleines Script schreiben, dass alle Daten aus der Tabelle ausliest, das "alte" Datumsformat (dd-mm-YYY) unformatieren in YYY-mm-dd und zum Datensatz in die neue Spalte schreiben. Danach kannste die Spalte mit dem falschen Format löschen.

                Kommentar


                • #9
                  Hatte ehrlichgesagt noch nie so ein Problem, aber eventuell [man]strrev[/man]

                  Kommentar


                  • #10
                    Danke - das habe ich vorhin übersehen, die Reihenfolge (us format) beim import, da blieb alles auf 00.00.00

                    Kommentar


                    • #11
                      moment noch - das ganze sind Termine die aus einem kleinen Java Script Kalender ausgewählt werden können - also nicht unbedingt das aktuelle Datum, da müsste dann auch beim input das Format geändert werden auf US ... hm und die Anzeige der Ausgabe dann auch wieder zurück ...
                      Gibts sonst keine andere Möglichkeit mehr?

                      Kommentar


                      • #12
                        Zitat von ragtek Beitrag anzeigen
                        Hatte ehrlichgesagt noch nie so ein Problem, aber eventuell [man]strrev[/man]
                        Schau dir mal das Ergebnis von
                        PHP-Code:
                        strrev('01-01-2010'
                        an. Ich glaube nicht, dass der Wert in ein DATE-Feld übernommen wird...

                        Kommentar


                        • #13
                          @ragtek:
                          PHP-Code:
                          $zeit '10.03.2010';
                          echo 
                          strrev($zeit);

                          // müßte dann diese Ausgabe ergeben:
                          0102.30.01 


                          EDIT: ah ja... siehe comlar...
                          Competence-Center -> Enjoy the Informatrix
                          PHProcks!Einsteiger freundliche Tutorials

                          Kommentar


                          • #14
                            Naja, der Benutzer sollte das Datum schon "in Deutsch" angeben können.
                            Du kannst das vom Script, dass die Daten verarbeitet, die Eingabe ja umwandeln. Da reichen einfach zwei Funktionen wie datumVonDatenbank() oder datumNachDatenbank().

                            Um ein Datum einigermaßen sinnvoll und sortierbar in einer Datenbank zu speichern, bietet sich entweder das amerikanische Format YYYY-mm-dd mit dem entsprechenden Feldtyp an oder als Timestamp.

                            Funktionen, die dir dabei helfen könnten, wären explode(), mktime(), strtotime()

                            Kommentar


                            • #15
                              das ist etwas problematisch da dieser Parameter auch im POST /GET (geht noch weiter in Unterseiten u. Uploads) weiterverwendet wird ...
                              Am einfachsten wäre wohl nach ID zu sortieren ...

                              Kommentar

                              Lädt...
                              X