2012-03-14 17 views
5

Sto cercando di mettere insieme una query CAML che confronta due oggetti DateTime, ma I non riesce a farlo funzionare utilizzando un confronto Eq. Dai miei test posso ottenere Gt, Lt, Geq, Leq per lavorare con i confronti DateTime, ma l'Eq non sembra funzionare affatto, mai.Query CAML Confronto di DateTime con Eq

Il primo oggetto è un campo Data e ora (prodotto da InfoPath e salvato in un campo Data e ora in un elenco di SharePoint), l'esempio corrente ha "14/03/2012 12:00 AM". Ho tentato di utilizzare il valore [Oggi /], utilizzando un valore codificato nel formato ISO 2012-03-14T00: 00: 00Z ma finora non è stato eseguito nulla. Ho sperimentato IncludeTimeValue, impostandolo su true/false, nessun miglioramento.

mio query corrente sembra un po 'come questo,

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

Questo restituisce nulla, anche se ho un elemento con quel tempo data nell'elenco. Qualche idea?

+0

Penso che nel frattempo vado a controllare se è nell'intervallo Gt/Lt per determinare se si tratta di una data specifica piuttosto che usare l'Eq per farlo. Il tipo di rende per una domanda più brutta, ma funziona finora. – ferr

+0

Devi rimuovere le virgolette attorno al valore. – ktharsis

+0

Scusa che era un errore di battitura nel post, il codice effettivo non riflette quello. – ferr

risposta

1

fa questo lavoro:

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

Non funziona. – ferr

+0

Cosa restituisce? 0 risultati? un errore? – TroyBramley

+0

Perché restituirà gli articoli nel campo "SomeDateTimeField" = 2012-03-14T00: 00: 00. Il risultato sarà vuoto Se il valore del campo differisce di più di un secondo. –

2

economico pari non può tornare nulla, perché secondi sono contati. Prova a utilizzare l'intervallo di date. Esempio:

<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> 

preghiamo quindi di prestare attenzione, usiamo stessa data, ma il tempo diverso.

Problemi correlati