Ce language permet d'effectuer des requêtes sur le contenu de vos listes Sharepoint. L'utilisation des dates dans les Caml Query est relativement peu documentée.
Voici un petit article expliquant quelques points intéressants sur les Caml Query et les dates :
- Format de date
- Utilisation de <Today/> pour la date du jour
- Comparaison prenant en compte l'heure
- Dates relatives
Format de date
Dans une Caml Query les dates utilisent le format ISO8601.
Pour faire une comparaison avec le 30 janvier 2009, vous devrez donc utiliser la syntaxe suivante :
<Where> <Ge> <FieldRef Name="EventDate" /> <Value Type="DateTime">2009-1-30T00:00:00Z</Value> </Ge> </Where>
Lorsque vous définissez votre requête CAML en C#, vous pouvez utiliser la méthode SPUtility.CreateISO8601DateTimeFromSystemDateTime() pour formater les dates.
Utilisation de <Today>
Le Caml vous permet de faire référence à la date et heure actuelle. Pour cela utilisez la balise "<Today/>"
<Where> <Ge> <FieldRef Name="EventDate" /> <Value Type="DateTime"> <Today /> </Value> </Ge> </Where>
Comparaison prenant en compte l'heure
Par défaut les opérateurs de comparaison du Caml ne prennent pas en compte l'heure dans la requête. Pour prendre en compte l'heure dans une comparaison, il faut ajouter le paramètre IncludeTimeValue="TRUE"
<Where> <Ge> <FieldRef Name="EventDate" /> <Value Type="DateTime" IncludeTimeValue="TRUE"> <Today /> </Value> </Ge> </Where>
Dates relatives
Il est fréquent de vouloir effectuer une requête sur une date relative par rapport à la date du jour. Par exemple pour afficher les événements des 5 prochains jour.
Pour répondre à ce problème la balise <Today /> supporte l'attribut "OffsetDays" qui permet de définir un décalage par rapport a la date actuelle.
<Where> <Ge> <FieldRef Name="EventDate" /> <Value Type="DateTime"> <Today OffsetDays="5"/> </Value> </Ge> </Where>
Un nombre positif permet d'ajouter des jours et un nombre négatif permet de retrancher des jours.
Afin de faciliter le travail sur les CAML Query, vous pouvez utiliser U2UCamlBuilder, il doit faire partie de la boite à outils de tous développeur Sharepoint.