Magazine High tech

Utilisation de la date et de l'heure dans une CAML Query

Publié le 10 février 2009 par Blogtech

image Les CAML query sont beaucoup utilisés par sharepoint, on les retrouve dans les défintions de liste, les requêtes de la ContentByQueryWebPart etc...

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.

image


Retour à La Une de Logo Paperblog

A propos de l’auteur


Blogtech 3 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte