我有表 dateime 的值是這樣的
2021-12-08 10:10:54.657
2021-12-08 10:10:41.567
2021-12-08 10:09:51.960
2021-12-08 10:10:54.657
2021-12-08 10:10:41.567
2021-12-08 10:09:51.960
2021-12-08 10:10:54.657
我想要那天或今天(現在是 2021 年 12 月 8 日)。所以我嘗試在控制器中使用 EF:
ViewBag.CByUserToday = _db.ArrayDatas.Where(a => a.CreatedBy == user && a.CreatedDate == DateTime.Today.Date).Count();
但我仍然沒有得到行。當我嘗試除錯 DateTime.Today.Date 時,它??說 DateTime.Today = {09/12/2021 00:00:00} 。但是當我嘗試將 createddate 更新為 '2021-12-09 00:00:00.000' 時,它可以被檢索。那么,如何檢索我今天創建的行(忽略時間)?
uj5u.com熱心網友回復:
檢查列是否大于或等于今天,小于明天:
DateTime today = DateTime.Today;
DateTime tomorrow = today.AddDays(1);
ViewBag.CByUserToday = _db.ArrayDatas
.Where(a => a.CreatedBy == user
&& a.CreatedDate >= today
&& a.CreatedDate < tomorrow)
.Count();
這樣,您的 DBMS 將能夠在CreatedBy和CreatedDate列上使用合適的索引來滿足您的查詢。
當您嘗試過濾列時,通常最好避免在列上呼叫函式,因為這意味著查詢不是SARGable。但是,根據DBA上的這個執行緒,將datetime/datetime2列轉換date 為SARGable,至少在 Microsoft SQL Server 中是這樣。
uj5u.com熱心網友回復:
a.CreatedDate.Date == DateTime.Today.Date
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/379323.html
標籤:C# sql-server 实体框架
上一篇:SUBSTRING拆分列名得到第一個和最后一個基于空間的
下一篇:為什么我的nodejs腳本無法連接到我在docker中運行的mssql資料庫,但MicrosoftSQLServerManagement可以
