Ankündigung

Einklappen
Keine Ankündigung bisher.

[MySQL] Date('d-m-Y H:i:s') von DB korrekt in PHP sortieren lassen.

Einklappen

Neue Werbung 2019

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

  • [MySQL] Date('d-m-Y H:i:s') von DB korrekt in PHP sortieren lassen.

    Hi

    ich habe einige einträge in meiner Datenbank mit datum. Jedoch habe ich anscheinend nicht das korrekte Format genommen, denn ich kann das nicht 100%tig korrekt sortieren lassen.
    Ich habe auch gegoogelt, doch nicht wirklich exakt mein Problem gefunden.

    Ich benutze "date('d-m-Y H:i:s')" zum eintragen in die Datenbank, richtig wäre anscheinend aber wohl "date('Y-m-d H:i:s')".

    mit "SELECT name, ip, port FROM server WHERE game = 'Counter-Strike: Source' ORDER BY UNIX_TIMESTAMP(lastcheck) DESC LIMIT 5" funktioniert es halt nicht.

    Hat da jemand einen tipp?


    MfG
    Slluxx

  • #2
    Ja. Richtige Datentypen verwenden.

    Kommentar


    • #3
      Formatiere deine Daten in der DB um. Sollten in der DB immer im Standartformat gespeichert werden. Umwandelt kannste dann im Business Logic Layer oder im Präsentation Layer.

      Kommentar


      • #4
        DH, wenn ich das richtige Date format angebe ( date('Y-m-d H:i:s') ) kann ich mit "UNIX_TIMESTAMP(lastcheck)" das auch richtig sortieren?

        oder muss ich in php zb datetime oder time() oder was anderes angeben?

        Kommentar


        • #5
          Soweit ich weiß kannste den UNIX_TIMESTAMP dann auch weglassen.

          Kommentar


          • #6
            Du hast ein Datum mit Uhrzeit, also nutze, wie akretschmer schon erwähnt hat, den richtigen Datentyp! Datetime ist das, was du verwenden solltest

            Kommentar


            • #7
              ich lasse immer den timstamp in die datenbank eintragen, also ds ergebnis von time(). Da das die sekunden seit 1970 sind, also ein integer, kannst du das auch unkompliziert sortieren lassen. ich schreibe meist nur in die Query
              ... ODER BY `time` DESC. Wenn du dann beispielsweise alle datensätze zwischen zwei timestamps suchst, kannst du sowas hier schrieben.
              WHERE `time`<=$time AND `time`>=$time2
              Deshalb nutze ich das immer. Vllt brauchst du diese Anwendung nicht, aber man weiß ja nie wo es hinführt das Projekt.

              Kommentar


              • #8
                Und was machste bei Daten vor 1970?

                Kommentar


                • #9
                  Zitat von poseidon29 Beitrag anzeigen
                  ich lasse immer den timstamp in die datenbank eintragen, also ds ergebnis von time().
                  Das hab ich ausprobiert, bevor ich es hier gelesehen habe - und funktioniert einwandfrei!

                  Da ich nicht vor 1970 gehen muss ist das auch eine schöne lösung für mich

                  Kommentar


                  • #10
                    Ok, mag für deine Lösung reichen. Aber im Grunde machst du dein System nur unflexibel.Und du benutzt einen falschen Datentyp.

                    Kommentar


                    • #11
                      Zitat von poseidon29
                      ich lasse immer den timstamp in die datenbank eintragen, also ds ergebnis von time(). Da das die sekunden seit 1970 sind, also ein integer, kannst du das auch unkompliziert sortieren lassen. ich schreibe meist nur in die Query
                      ... ODER BY `time` DESC. Wenn du dann beispielsweise alle datensätze zwischen zwei timestamps suchst, kannst du sowas hier schrieben.
                      WHERE `time`=$time2
                      Deshalb nutze ich das immer. Vllt brauchst du diese Anwendung nicht, aber man weiß ja nie wo es hinführt das Projekt.
                      Das ist aus drei Gründen eine schlechte Idee:

                      - Du kannst die DateTime-Funktionen von MySQL dann nicht mehr verwenden.
                      - Du hast (wie schon erwähnt) einen verhältnismäßig kleinen Zeitraum zur Darstellung deiner Zeit.
                      - Du kannst diesen Wert dann selbst nicht mehr verstehen.

                      Du kannst auf der anderen Seite aber alles mit DateTime machen, was du auch mit einem Timestamp machen könntest. Wirklich alles. Indizierung, manipulation, sorting, computation. Du gewinnst nichts, aber verlierst eine Menge.

                      Kommentar

                      Lädt...
                      X