我知道这是一个老问题,但我仍然有点困惑,请告诉我如何。
我在datagridview中加载了一个带有条件的数据表,就像下面的代码一样,事情是,当FromDate
和ToDate
是相同月份时,它运行良好。不同的月份使datagridview为空。
FromDate
和ToDate
在日历中被选中到2个文本框中。
private void LoadWorkRequestSearch()
{
DateTime datefrom = Convert.ToDateTime(textdatefrom.Text.Trim());
DateTime dateto = Convert.ToDateTime(textdateto.Text.Trim());
string sql = "";
sql = "Select DateCreated, ri.RequestID, RequesterID, RequestStatus, RequestDetail, SentTo, EstimateCompleteDate, ru.StartedDate, ru.ProcessTime From [RequestInfo] ri ";
sql = sql + " LEFT JOIN [StatusRequest] sr ON sr.RequestStatusID = ri.Status";
sql = sql + " LEFT JOIN [RequestUsers] ru ON ru.RequestID = ri.RequestID ";
sql = sql + " Where DateCreated between '" + datefrom.ToShortDateString() + "' and '" + dateto.ToShortDateString() + "'";
_dtworkrequestsearch = _cls_DB.QueryDataTable(sql);
G1.DataSource = _dtworkrequestsearch;
}
我尝试了所有搜索过的内容,但它没有按我想要的方式工作,请帮忙。
谢谢,
答案 0 :(得分:1)
使用日历控件并强制执行日期格式。
从TextBox转换到日期是可能的问题,例如dd / MM到MM / dd
修改强>
您正在使用varchar(10)字段作为日期。这不允许SQL BETWEENS,因为它是一个不是基于数字/日期的文本字段,因此它执行字母数字搜索。
使用DateDreated的SmallDateTime列来获得所需的结果。