1 Minuten Lesezeit

SPO–CAML: Modified greater than returns no elements


In einem meiner letzten Projekte musste ich per CAML Query Elemente aus einer Liste in SharePoint Online abfragen. Eigentlich eine einfache Sache, die aber offensichtlich aber ihre Tücken haben kann, wenn man Zeitwerte prüft.  Die Abfrage war schnell erstellt und sah wie folgt aus:

 camlQuery.ViewXml = String.Format("<View><Query><Where><And><Eq><FieldRef Name='{0}' /><Value Type='Choice'>{1}</Value></Eq><Gt><FieldRef Name='Modified' /><Value IncludeTimeValue='TRUE' Type='DateTime' >{2}</Value></Gt></And></Where></Query></View>", _StateField, status, lastSyncTime);  

In meiner SharePoint Liste habe ich ein einen Listenelement erstellt und die Abfrage gestartet. Zu meiner Verwunderung wurden keine Ergebnisse zurück geliefert, obwohl der neue Listeneintrag neuer als der letzte Synchronisationszeitstempel war.

Nach einiger Recherche habe ich dann die Ursache gefunden. Entscheidend ist die Zeitzone, in der die Site Collection angelegt wurde! In meinem Fall UTC-8.

Demnach war mein Listeneintrag (unter der Haube) immer älter als der UTC-Zeitwert in der Abfrage. (Obwohl in der SharePoint UI immer der umgerechnete Zeitwert für meine Zeitzone angezeigt wurde.)

Um dieses Problem zu umgehen gibt es einen einfachen Tick mit großer Wirkung. In der CAML Abfrage kann das Attribute StorageTZ=’TRUE’ angegeben werden. Dieses sorgt dafür, dass die Zeitwerte der Abfrage auf die Zeitzone der Site Collection intern angepasst werden.

Ich hoffe dies kann euch bei eurem nächsten Projekt Recherchezeit sparen! 🙂

 

 

 

Ähnliche Blog-Artikel

Mit unserem HanseVision Update sind Sie immer gut informiert über alle Themen rund um moderne Zusammenarbeit, kluge Köpfe, Lösungen und Tools, Referenzen und Aktionen.

Jetzt zum Newsletter anmelden
Updates & Aktionen
Versand alle 4-6 Wochen
Trends & aktuelle Entwicklungen