簡體   English   中英

實體框架無法使用datetime.now條件返回數據庫中的記錄

[英]entityframework can't return the records in database with datetime.now condition

我試圖使用此查詢從數據庫返回一些記錄:

        ViewBag.TrafficEnter = _iTrafficRepository.Get().Where(i => i.Type == "ورود" && i.SubmitDateTime == DateTime.Now).ToList();

在此處輸入圖片說明

在這里您可以查看我的數據庫記錄:

在此處輸入圖片說明

但是問題是查詢不返回任何值。為什么?

您比較DateTime在你的數據庫的價值值DateTime.Now返回當前時間(包括毫秒),可能永遠不會匹配表中的任何值。

修改查詢以選擇范圍內的值

var minDate = DateTime.Today; // returns today's with time component set to 00:00:00
var maxDate = minDate.AddDays(1);
ViewBag.TrafficEnter = _iTrafficRepository.Get()
    .Where(i => i.Type == "ورود" && i.SubmitDateTime >= minDate && i.SubmitDateTime < maxDate).ToList();

假設今天的日期是2016年5月24日,它將返回圖像中顯示的所有17條記錄。

DateTime.Now的問題在於,它意味着一個非常小的日期范圍,該范圍等於其精度的最小分度,在這種情況下為1毫秒。 除非您使用與DateTime幾乎完全相同的值創建記錄,否則您將永遠不會獲得匹配。

您有兩種解決方案(可能不適合您的需求);

首先,與其匹配精確的dateTime,不如嘗試匹配一個范圍,例如,DateTime.Now之前/之后的1小時。 這樣的好處是可以控制范圍。

或者,您可以嘗試將日期值(DateTime.Now.Date)與記錄的日期匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM