Предположим, что вы хотите создать CAML запрос в котором проверяете значение поле типа DateTime. Естественно, первое, что приходит на ум написать что-то типа этого:
Query = @"<Where>
<Eq>
<FieldRef name='SomeDateField'>
<Value type='DateTime'>" + DateTime.Now.ToString() + @"</value>
</FieldRef>
</Eq>
</Where>"
Что, естественно, работать не будет по причине того, что даты хранятся в Sharepoint в формате ISO8601, то есть вот в таком виде: 2014-01-01T10:11:12Z
Получить дату в таком формате можно как руками используя, например, формат в методе .ToString(), а можно поступить проще, используя вот такой метод из SPUtilities:
Query = @"<Where>
<Eq>
<FieldRef name='SomeDateField'>
<Value type='DateTime'>" + SPUtility.CreateISO8601DateTimeFromSystemDateTime(DateTime.Now) + @"</value>
</FieldRef>
</Eq>
</Where>"
Заметки о разработке ПО, советы по .net, SharePoint, SQL, архитектура приложений, литература по программированию. А также просто просто мысли о жизни и рассказы о том, что интересно автору, например путешествиях и вкусной еде ;)
понедельник, 21 июля 2014 г.
Использование типа DateTime в CAML запросах.
В таком случае даты будут корректно обрабатываться. Но, только даты. Временная составляющая в таком случае будет игнорироваться. Чтобы это исправить нужно немного поправить тег Value
А именно, добавить в него атрибут IncludeTimeValue:
Query = @"<Where>
<Eq>
<FieldRef name='SomeDateTimeField'>
<Value type='DateTime' IncludeTimeValue='TRUE'>" + SPUtility.CreateISO8601DateTimeFromSystemDateTime(DateTime.Now) + @"</value>
</FieldRef>
</Eq>
</Where>"
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий