Nächstliegendes Datum herausfinden?

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

  • Nächstliegendes Datum herausfinden?

    Hallo,

    ich habe einen Tabelle, in der ich Termine ablege. Jetzt möchte ich durch eine SQL Abfrage den Termin mit dem Datum herausfinden, welches am nächsten zum heutigen Datum steht.

    Muss ich dazu eine "komplizierte" Berechnung machen, die in einer Schleife das heutige Datum mit allen Datumsfeldern subtrahiert und sich den Datensatz merkt, welches das kleinste Ergebnis hat??
    Oder gibt es vielleicht sogar eine Funktion?

    Wie wähle ich denn den Datensatz anschließend aus?

    Wäre super, wenn mir jemand helfen könnte!

    Gruß
    Kane
    Zuletzt geändert von Kane23; 16.11.2002, 23:45.

  • #2
    abs(to_days(datum)-to_days(now()))
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      wenn du keine Termine haben willst, die in der Vergangenheit liegen, kannste das so machen

      select ... , min(termin_datum) from ... where termin_datum > CURR_DATE()

      oder CURRDATE() ? schau mal nach!

      wenn du die Termine in der Vergangheit auch baechten willst, mußt die das Minimum von der absoluten Differenz zu heute nehmen:


      MIN(ABS(UNIXTIME(termin_datum)-UNIXTIME()))
      TBT

      Die zwei wichtigsten Regeln für eine berufliche Karriere:
      1. Verrate niemals alles was du weißt!


      PHP 2 AllPatrizier II Browsergame

      Kommentar


      • #4
        Ok,

        ich werde das morgen mal probieren. Schaut ziemlich plausibel aus.
        Ich brauch GENAU EINEN Datensatz, nämlich NUR den EINEN nächsten, der nach dem heutigen Datum kommt bzw. gleich ist.

        Könntest du das noch verfeinern? Ich bin wirklich nicht so fit auf dem Gebiet...

        Danke trotzdem schonmal!

        ciao
        Kane

        Kommentar


        • #5
          select * from tabelle order by abs(to_days(datum)-to_days(now())) limit 1

          Wenn´s denn nur einer ist ...

          wenn du nur Daten in der Zukunft hast:
          select * from tabelle order by datum limit 1

          wenn du nur Daten in der Vergangenheit hast:
          select * from tabelle order by datum desc limit 1

          wenn du Daten in Zukunft und Vergangenheit hast, aber nur aus Gegenwart und Zukunft suchst:
          select * from tabelle where datum>=now() order by datum limit 1
          mein Sport: mein Frühstück: meine Arbeit:

          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

          Kommentar

          Lädt...
          X