【发布时间】:2021-09-18 07:59:15
【问题描述】:
我正在尝试按日期过滤数据库查询的结果。用户将输入一个日期值作为字符串,然后我使用该字符串与每个查询结果的日期进行比较以尝试找到匹配项,但是即使我知道存在匹配项,也不存在匹配项。
查询和过滤:
var documents = from s in db.Documents
select s;
if (!String.IsNullOrEmpty(searchString))
{
documents = documents.Where(s => s.Order_Date.ToString().Contains(searchString) ||
s.Comment.Contains(searchString));
}
需要注意的是,如果在Comment 列中找到searchString,那么它可以正常工作。但同样,日期永远不会匹配。
在应用程序连接到列Order_Date 的SQL 表中,数据类型为date(不是datetime)。但是在模型中 Order_Date 是一个 DateTime 变量,因为据我所知 C# 没有日期。
这是一个问题的例子:
结果
我做错了什么?
【问题讨论】:
-
尽量保持值'date-like'而不是使用字符串。
DateTime.Parse您的用户输入。创建 2 个vars:dateFrom和dateTo。将dateFrom设置为输入的'0:0:0',将dateTo设置为输入的'23:59:59',搜索s.order_date >= dateFrom && s.order_date <= dateTo -
我不明白你说的第二部分。比较
s.order_date >= dateFrom && s.order_date <= dateTo根本不使用searchString? -
dateFrom和dateTo将是该日期的午夜和该日期的晚上 11:59:59 (23:59:59)
标签: c# sql asp.net-mvc date datetime