1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Datum vergleichen

  • drummingchris
  • 6. November 2009 um 17:35
  • Unerledigt
  • drummingchris
    2
    drummingchris
    Mitglied
    Punkte
    35
    Beiträge
    4
    • 6. November 2009 um 17:35
    • #1

    hi,

    ich arbeite an einem reservierungssystem und hab bei der abfrage nach dem freien equipment für den zeitraum a bis b folgendes problem:

    reservierungen werden immer mit 2 datumsangaben gespeichert (zB start: 2009-11-06 und ende: 2009-11-07). equipment das bis tag x reserviert ist, kann am gleichen tag wieder ausgeliehen werden (weil die rückgabe immer vor der entlehnung erfolg, nur nebenbei).

    d.h. bei der abfrage habe ich folgende kriterien für freies equipment:
    ende der vorherigen reservierung <= gewünschtes start-datum
    anfang der nachfolgenden reservierung >= gewünschtes enddatum.

    ansich ja ganz logisch und einfach. d.h. wenn etwas von 13. bis 20.12 reserviert ist, kann ichs mir ab dem 20.12 wieder ausborgen. nur ist es so, dass genau dann, wenn etwas bis tag x reserviert ist und ichs ab tag x haben will, das nicht geht, weil das equipment noch als ausgeborgt angezeigt wird (obwohl ich ja kleinergleich/größergleich und nicht kleiner/größer verwendet hab). kanns sein, dass man beim datum anders vergleichen muss??

    ich schreib das ganze in symfony, daher bringt der code glaub ich relativ wenig (sofern man sich nicht in symfony auskennt). den folgenden code nutze ich, um an das bereits reservierte equipment zu kommen:

    Code
    $c = new Criteria();
    $c->addJoin(GeraetPeer::ID, Reservierung2Peer::GERAET);
    $c->addJoin(Reservierung2Peer::RESERVIERUNG, ReservierungPeer::ID);
    $c->add(ReservierungPeer::ENDE, $this->anfang, Criteria::GREATER_EQUAL);
    $c->add(ReservierungPeer::BEGINN, $this->ende, Criteria::LESS_EQUAL);
    $this->equipment = GeraetPeer::doSelect($c);

    any ideas? oder war meine beschreibung noch zu ungenau?

  • Wings-of-Glory
    28
    Wings-of-Glory
    Mitglied
    Reaktionen
    105
    Punkte
    8.305
    Beiträge
    1.573
    • 6. November 2009 um 17:54
    • #2

    aehm, wie waers mit nem zusaetzlichen eintrag "returned", den du noch zueaetzlich abfragst. kann boolean oder timestamp sein

    Otto: Apes don't read philosophy. - Wanda: Yes they do, Otto, they just don't understand
    Beleidigungen sind Argumente jener, die über keine Argumente verfügen.
    «Signanz braucht keine Worte.» | «Signanz gibts nur im Traum.» 

    Das neue MTB-Projekt (PO, Wiki, Mitschriften, Ausarbeitungen, Folien, ...) ist online
    http://mtb-projekt.at

  • Paulchen
    1
    Paulchen
    Gast
    • 6. November 2009 um 18:38
    • #3
    Zitat von drummingchris

    obwohl ich ja kleinergleich/größergleich und nicht kleiner/größer verwendet hab

    Ist nicht genau das das Problem? Du hast das Problem, wenn eingegebenes Datum und gespeichertes Datum gleich sind.

    Zitat von Wings-of-Glory

    aehm, wie waers mit nem zusaetzlichen eintrag "returned", den du noch zueaetzlich abfragst. kann boolean oder timestamp sein

    Du hast nicht verstanden, was drummingchris will. Er speichert in seinem System Geräte und Reservierungen, letztere immer mit Start- und Enddatum. Wenn der Benutzer jetzt eine neue Reservierung mit Start- und Enddatum eingibt, sollen alle Reservierungen ausgegeben werden, die mit der neuen Reservierung zeitlich kollidieren.

  • dowi
    6
    dowi
    Mitglied
    Reaktionen
    7
    Punkte
    307
    Beiträge
    59
    • 6. November 2009 um 18:45
    • #4

    mögliche ursache kann auch am date selbst liegen. in der datenbank wird der komplette timestamp gespeichert (also mit uhrzeit) und vertraue nicht darauf, dass die uhrzeit mit "0" hinterlegt ist. wenn du es nur tag-genau brauchst, dann solltest du auch nur den tag in deinem vergleich verwenden.

    Im nächsten Leben werd ich ein Koala:
    21 Stunden schlafen und 3 Stunden fressen!

    Einmal editiert, zuletzt von dowi (6. November 2009 um 18:57)

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung