2012-03-14 12 views
5

Tôi đang cố gắng kết hợp một truy vấn CAML so sánh hai đối tượng DateTime, nhưng tôi không thể làm việc đó bằng cách sử dụng so sánh Eq. Từ thử nghiệm của tôi tôi có thể nhận được Gt, Lt, Geq, Leq để làm việc với các so sánh DateTime, nhưng Eq dường như không làm việc ở tất cả, bao giờ hết.CAML Truy vấn So sánh ngày giờ với Eq

Đối tượng đầu tiên là trường Ngày và Giờ (được sản xuất bởi InfoPath và được lưu vào trường Ngày và Giờ trong danh sách SharePoint), ví dụ hiện tại có "3/14/2012 12:00 SA". Tôi đã thử sử dụng giá trị [Today /], sử dụng giá trị được mã hóa cứng ở định dạng ISO 2012-03-14T00: 00: 00Z nhưng không có gì có hiệu quả cho đến thời điểm này. Tôi đã thử nghiệm với IncludeTimeValue, thiết lập nó thành true/false, không cải thiện.

truy vấn hiện tại của tôi trông một chút như thế này,

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

này trả gì cả, mặc dù tôi có một mục với thời gian cập nhật trong danh sách. Bất kỳ ý tưởng?

+0

Tôi nghĩ rằng trong thời gian chờ đợi, tôi sẽ chỉ kiểm tra xem trong phạm vi Gt/Lt có xác định xem đó là một ngày cụ thể thay vì sử dụng phương pháp để thực hiện điều đó hay không. Loại làm cho một truy vấn xấu hơn, nhưng nó hoạt động cho đến nay. – ferr

+0

Bạn phải xóa dấu ngoặc kép xung quanh giá trị. – ktharsis

+0

Xin lỗi, đó là lỗi đánh máy trong bài đăng, mã thực tế không phản ánh điều đó. – ferr

Trả lời

1

Liệu công việc này:

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

Nó không hoạt động. – ferr

+0

Điều gì sẽ trở lại? 0 kết quả? một lỗi? – TroyBramley

+0

Vì nó sẽ trả về các mục có trường "SomeDateTimeField" = 2012-03-14T00: 00: 00. Kết quả sẽ trống Nếu giá trị trường khác hơn một giây. –

2

tuyên bố bình đẳng không thể trở về bất cứ điều gì, bởi vì giây được tính. Thử sử dụng phạm vi ngày. Ví dụ:

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

Hãy chú ý, chúng tôi sử dụng cùng một ngày, nhưng thời gian khác nhau.