2012-03-14 25 views
5

Estoy tratando de armar una consulta CAML que compare dos objetos DateTime, pero I no puede hacer que funcione usando una comparación de ecuación. A partir de mis pruebas puedo hacer que Gt, Lt, Geq, Leq trabajen con las comparaciones DateTime, pero Eq parece no funcionar en absoluto.Comparación de consultas CAML Fecha y hora con la ecuación

El primer objeto es un campo Fecha y hora (producido por InfoPath y guardado en un campo Fecha y hora en una lista de SharePoint), el ejemplo actual tiene "3/14/2012 12:00 AM". Intenté usar el valor [Today /], usando un valor codificado en formato ISO 2012-03-14T00: 00: 00Z pero nada ha funcionado hasta ahora. He experimentado con IncludeTimeValue, configurándolo en verdadero/falso, sin mejoría.

Mi consulta actual parece un poco a esto,

<Query> 
<Where> 
    <Eq> 
    <FieldRef Name="SomeDateTimeField" IncludeTimeValue="TRUE" /> 
    <Value Type="DateTime" IncludeTimeValue="TRUE">2012-03-14T00:00:00Z</Value> 
    </Eq> 
</Where> 
</Query> 

Esto no devuelve nada, a pesar de que tengo un artículo con fecha de ese momento en la lista. ¿Algunas ideas?

+0

Creo que mientras tanto solo voy a comprobar si está en el rango Gt/Lt para determinar si es una fecha específica en lugar de usar Eq para hacer eso. Tipo de hace una consulta más fea, pero funciona hasta ahora. – ferr

+0

Tienes que eliminar las comillas alrededor del valor. – ktharsis

+0

Disculpa que fue un error tipográfico en la publicación, el código real no refleja eso. – ferr

Respuesta

1

hace este trabajo:

<Query><Where><Eq><FieldRef Name="SomeDateTimeField"/><Value IncludeTimeValue='TRUE' Type='DateTime'>2012-03-14T00:00:00</Value></Eq></Where></Query> 
+2

No funciona. – ferr

+0

¿Qué devuelve? 0 resultados? ¿un error? – TroyBramley

+0

Porque devolverá elementos en el campo "SomeDateTimeField" = 2012-03-14T00: 00: 00. El resultado estará vacío Si el valor del campo es diferente a más de un segundo. –

2

Igualdad declaración no puede devolver nada, porque segundos se cuentan. Intenta usar el rango de fechas. Muestra:

<Where> 
<And> 
    <Gt> 
    <FieldRef Name='Created' /> 
    <Value IncludeTimeValue='TRUE' Type='DateTime'>2014-12-10T00:00:00Z</Value> 
    </Gt> 
    <Lt> 
    <FieldRef Name='Created' /> 
    <Value IncludeTimeValue='TRUE' Type='DateTime'>2014-12-10T23:59:59Z</Value> 
    </Lt> 
</And> 
</Where> 

Por favor, preste atención, usamos la misma fecha, pero en otro momento.