filter mit zeitbedingung

  • hallo,
    ich versuche einen filter mit zeitbedingung zu definieren:


    Leider scheint es, daß in der zurückgeklieferten Auswahl die Zeitbedingungen vollkommen ignoriert wurden, d.h. er gibt mir items vom anbeginn aller zeiten an zurück - was mache ich falsch?
    gruss

  • Hallo,
    die Felder StartDate bzw. EndDate im Filter werden in dem Fall ignoriert, weil kein StartField und StartOperator bzw. kein EndField und EndOperator angegeben sind. Für die Filterung nach Datum muss also immer ein Startdatum angegeben werden, sowie das Feld, das für das Startdatum herangezogen werden soll (Datum von, Datum bis, Erstellungsdatum, Änderungsdatum), sowie ein Operator (kleiner, kleiner gleich, gleich, größer gleich, größer). Genauso für das Enddatum.


    Das sieht dann z.B. so aus:

    PHP
    1. $itemsFilter = rpc_itemslib::newRpcItemFilter();
    2. $itemsFilter->StartDate = new GhRpcDateTime(time() - 2419200); // 4 Wochen zurück
    3. $itemsFilter->StartField = rpc_itemslib::idfStartDate; // Startdatum prüfen
    4. $itemsFilter->StartOperator = rpc_itemslib::ioGreaterEqual; // Startdatum größer oder gleich
    5. $itemsFilter->EndDate = new GhRpcDateTime(time() - 1209600); // 2 Wochen zurück
    6. $itemsFilter->EndField = rpc_itemslib::idfStartDate; // Startdatum prüfen
    7. $itemsFilter->EndOperator = rpc_itemslib::ioLessEqual; // Startdatum kleiner oder gleich


    In dem Beispiel würde dann nach Elementen gesucht, deren Startdatum zwischen 4 und 2 Wochen alt ist. Soll nach Elementen gesucht werden, deren Startdatum maximal 4 Wochen alt ist und deren Enddatum mindestens 2 Wochen alt ist (die also im Zeitraum vor 4 - 2 Wochen gestartet und beendet wurden), dann müsste bei EndField stattdessen rpc_itemslib::idfEndDate angegeben werden.


    Die Filtereinstellungen für die Datumssuche sind zugegebenermaßen etwas kompliziert, aber so ermöglichen sie alle Suchkombinationen (z.B. auch nach Erstellungs- oder Änderungsdatum).


    PS: Wolfram, in PHP liefert time() tatsächlich einen kompletten Unix-Epoch Timestamp (Sekunden seit 1970). Die date() Methode formatiert dann eine solche Angabe ;)

  • Lieber Robert,
    danke fuer die Informationen. Ich habe das wie folgt ausprobiert


    und erhalte folgendes Ergebnis:


    Uebersehe ich noch etwas bei der Filterkonfiguration?
    Gregor

  • Wie sich herausstellte gibt es da wohl noch einen Fehler in der PHP API bis inkl. GREYHOUND Version 4.1.30 (build 1593). Das Datumsformat beim Senden an den Server macht offenbar manchmal Probleme. Der Fehler wurde nun korrigiert und tritt mit der PHP API der nächsten GREYHOUND Version nicht mehr auf.


    Wer noch Probleme damit hat kann gerne bei uns anfragen, wir schicken dann die korrigierte PHP API als .zip Datei zu. Ab der nächsten Release kann man sie dann wie gewohnt aus dem installierten GREYHOUND entnehmen.