Nur Einträge in bestimmer Zeitdifferenz



  • Hallo,

    ich möchte gerne nur Einträge anzeigen lassen, die in einer bestimmten Zeitdifferenz liegen. Ich habe in meiner Datenbank ein Feld activity(Typ DATETIME ), dass die letzte Aktivität speichert. Nun möchte ich alle Datensätze anzeigen lassen, wo die Aktivität nicht länger her ist, als 5 Minuten.
    Kann ich das mit MySQL lösen oder muss ich auf PHP zurückgreifen?

    Und was ist, falls die Zeit umgestellt wurde? Dann wäre die Aktivität ja plötzlich negativ oder definitiv länger als 5 Minuten her. Wie löst man das?

    Vielen Dank,
    Mareike S.



  • Nicht getestet:

    SELECT ... WHERE `activity` > NOW () - 300
    

    Bei der Zeitumstellung könntest du ja zumindest prüfen, ob das Ergebnis negativ ist.



  • devkid schrieb:

    Nicht getestet:

    SELECT ... WHERE `activity` > NOW () - 300
    

    Bei der Zeitumstellung könntest du ja zumindest prüfen, ob das Ergebnis negativ ist.

    Danke für die Antwort 🙂

    Ich konnte den Code noch nicht ausprobieren, aber ich werde es demnächst machen.

    Die Sache mit der Zeitumstellung ist sehr wichtig und ich habe leider keine Idee, wie ich das gescheit lösen kann. Hat niemand eine gute Idee?

    Vielen Dank,
    Mareike 🙂



  • Ich habe noch ein wenig geforscht. Wäre es sinnvoll TIMESTAMP zu nehmen?

    Wenn ich die Dokumentation richtig verstanden habe, dann wird dort UTC verwendet und es gibt keine Zeitumstellung.
    In PHP könnte ich dann mit date_default_timezone_set die Zeitzone immer entsprechend festlegen und so die korrekte Zeit angeben.

    Ist das der richtige Ansatz bzw. funktioniert das so?

    Vielen Dank,
    Mareike



  • Mareike S. schrieb:

    Die Sache mit der Zeitumstellung ist sehr wichtig und ich habe leider keine Idee, wie ich das gescheit lösen kann.

    Falls du mit Zeitumstellung sowas wie Sommerzeit/Winterzeit meinst, das ist einfach: speichere UTC statt Lokalzeit.

    Falls du meinst dass wer herkommt und die Zeit einfach so um ein paar Stunden umstellt: das lässt sich im Allgemeinen nicht gescheit lösen.



  • hustbaer schrieb:

    Mareike S. schrieb:

    Die Sache mit der Zeitumstellung ist sehr wichtig und ich habe leider keine Idee, wie ich das gescheit lösen kann.

    Falls du mit Zeitumstellung sowas wie Sommerzeit/Winterzeit meinst, das ist einfach: speichere UTC statt Lokalzeit.

    Falls du meinst dass wer herkommt und die Zeit einfach so um ein paar Stunden umstellt: das lässt sich im Allgemeinen nicht gescheit lösen.

    Ich meine natürlich die Sommerzeit/Winterzeit. Aber wie lasse ich MySQL als UTC speichern? Kann ich dann noch mit NOW() arbeiten und kann mein Feld als Typ weiterhin DATETIME verwenden?

    Ach, und kann ich das dann auch mit PHP ohne Probleme auslesen und entsprechend anzeigen? Wenn ja, dann wäre das vermutlich meine Lösung 🙂



  • Dazu kenne ich mich leider mit MySQL zuwenig aus.
    Es wird aber sicher Möglichkeiten geben, direkt über SQL einen Zeitwert in UTC zu erhalten. Bei MSSQL kann man dafür auch den selben Datentyp, also DATETIME verwenden - würde mich wundern wenn das by MySQL nicht geht.

    Was das Auslesen & Anzeigen (mit PHP) angeht: geht auch sicher, bloss wie kann ich dir nicht sagen 😉


Anmelden zum Antworten