CAML Query con intervallo di date
-
16-10-2019 - |
Domanda
sto scrivendo un SPSiteDataQuery
e sto avendo problemi con la proprietà Query
. Ho bisogno di tornare tutti i risultati in cui la Record_x0020_Yr_x0020_End_x0020_Date
è compresa tra 12/31 del corrente anno e 90 giorni prima.
Esempio: Se ho eseguito questa query ora, dovrei avere tutti gli elementi in cui le bugie data tra il 9/31 / / 31/2011 2011-12. Se ho eseguito la query in qualsiasi punto del prossimo anno, dovrei ottenere 9/31 / 2012-12 / 31/2012. Ecco quello che ho finora:
query.Query = string.Format(@"
<Where>
<Eq>
<FieldRef Name='Record_x0020_Yr_x0020_End_x0020_Date' />
<Value Type='DateTime' IncludeTimeValue='FALSE'>{0}</Value>
</Eq>
</Where>", new DateTime(DateTime.Now.Year, 12, 31).ToString("yyyy-MM-dd"));
Questo mi dà tutti coloro la cui data è sulla fine dell'anno, ma come faccio ad aggiungere l'intervallo?
Soluzione
CAML Query Builder strumento come questo di U2U per aiutarvi ad ottenere il diritto di sintassi .
Utilizzando questo strumento è ciò che ho per Data di inizio> = 1 / Gen / 2011 E StartDate <= 31 / Dic / 2011 -. È possibile adattare questo per le colonne di elenco e l'intervallo di date
<Query>
<Where>
<And>
<Geq>
<FieldRef Name="StartDate" />
<Value IncludeTimeValue="TRUE" Type="DateTime">2011-01-01T15:55:52Z</Value>
</Geq>
<Leq>
<FieldRef Name="StartDate" />
<Value IncludeTimeValue="TRUE" Type="DateTime">2011-12-31T15:56:29Z</Value>
</Leq>
</And>
</Where>
</Query>
Altri suggerimenti
Check this out:
Il due date:
DateTime lastDay = new DateTime(DateTime.Now.Year, 12, 31);
DateTime dtThreeMonthsPrior = lastDay.AddMonths(-3);
Inoltre, nella sua domanda lei ha citato come data 9/31 nullo a causa 9 ° mese ha solo 30 giorni .. lol