簡體   English   中英

如何使用 Linq c# 從 SQL Server 數據庫中獲取短日期時間並與 DateTime.Now 進行比較

[英]How to get a short DateTime from SQL Server database and compare with DateTime.Now using Linq c#

我的表中有一欄datesdate數據類型的shortDate格式“2018年2月12日”。

現在我希望使用 C# 中的 Linq 查詢來檢索日期。

這是我在 SQL Server 上運行的查詢,它返回一些行:

select * 
from tbl_Attendance 
where Dates = '2018/2/12'

但是,如果我嘗試運行這些查詢,它會返回 null 或“方法無法轉換為存儲表達式”錯誤。

只有以下查詢返回了正確的 ID 但不正確的日期。

var q = (from a in context.tbl_Attendance
         where a.ID.Value.CompareTo(Iden) < 0 && a.Dates.Value.CompareTo(DateTime.Now) < 0
         select a).FirstOrDefault();

和:

var q = (from a in context.tbl_Attendance
         where a.Dates == DateTime.Now
         select a).FirstOrDefault();

和:

var q = (from a in context.tbl_Attendance
         where a.Dates.Value.ToShortDateString() == DateTime.Now.ToShortDateString()                                               
         select a).FirstOrDefault();

最后我也嘗試過:

attendance = context.tbl_Attendance.Where(d => d.ID == row.xID && d.Dates == DateTime.Now).FirstOrDefault();
  1. 如果要將某個日期與另一個日期進行比較,則不必使用DateTime.Now因為它還會比較時間部分。 請改用DateTime.Today

  2. 錯誤

方法無法轉換為 store 表達式

出現是因為DateTime.Now.ToShortDateString()CompareTo()無法轉換為 SQL 查詢。

我的建議:首先聲明一個變量,然后為它賦值,然后在第二步查詢你的數據庫。

代碼:

DateTime myDate = DateTime.Today; // or DateTime.Parse("2018/2/12")
var result = (from a in context.tbl_Attendance
         where a.Dates == myDate 
         select a).FirstOrDefault();

暫無
暫無

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

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