尝试通过在条件中传递日期来检索记录,我使用日期时间选择器发送日期,但最后读者没有显示任何记录。
我将日期时间转换为Convert(char(10),ext_date,101)
仍然面临同样的问题。
string str=@"select * from extra_expense where CONVERT(char(10),ext_date,101) = @date";
sqlcommand = new SqlCommand(str,sqlconnection );
sqlcommand.Parameters.Add("@date", SqlDbType.DateTime).Value = datetimepicker1.value);
datareader = sqlcommand.ExecuteReader();
List<Projects> projects = new List<Projects>();
while (datareader.Read())
{
Projects proj = new Projects();
proj.expenseid = Convert.ToInt32(datareader.GetValue(0));
proj.ProjectDate = Convert.ToDateTime(datareader.GetValue(1));
projects.Add(proj);
}
datareader.Close();
return projects;
答案 0 :(得分:1)
您可以在T-SQL中将日期指定为字符串,如下所示:
SELECT MyFields FROM MyTable
WHERE StartDate >= '01-01-00' AND StartDate <= '12-31-00'
答案 1 :(得分:0)
您不应该在表中强制转换字段,您应该将参数强制转换为正确的类型。实际上,您已经在构建它,因为该参数被声明为datetime,但在您的查询中,您将ext_date强制为char(10)。 试试这个:
string str=@"select * from extra_expense where ext_date = @date";
与
一起sqlcommand.Parameters.Add("@date", SqlDbType.DateTime).Value = datetime.Parse( datetimepicker1.value);