如何在datetime列上运行查询

时间:2012-03-30 10:57:47

标签: c# sql

尝试通过在条件中传递日期来检索记录,我使用日期时间选择器发送日期,但最后读者没有显示任何记录。

我将日期时间转换为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;

2 个答案:

答案 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);