select * from Sheet where 姓名='焦鹏飞' and datediff(M,日期时间,'2013/4/22') = 0
我VS SQL Sever 中使用上述 查询语句 执行成功,但是我在C#中提示:
在将 nvarchar 值 'datediff(M,日期时间,'2013/4/22') = 0' 转换成数据类型 int 时失败。
请问这为啥?那里错了?
我VS SQL Sever 中使用上述 查询语句 执行成功,但是我在C#中提示:
在将 nvarchar 值 'datediff(M,日期时间,'2013/4/22') = 0' 转换成数据类型 int 时失败。
请问这为啥?那里错了?
wherelist.Add("姓名=@Name");
sqlparams.Add(new SqlParameter("@Name",names[i]));
wherelist.Add("@Date=0");
sqlparams.Add(new SqlParameter("@Date","datediff(M,日期时间," +"'"+dt.ToShortDateString()+"'"+ ") = 0"));
string sql = "select * from sheet";
string sqlwhere = string.Join(" and ", wherelist);
if (sqlwhere.Length > 0)
{
sqlwhere = " where " + string.Join(" and ", wherelist);
sql = sql +sqlwhere;
MessageBox.Show(sql);
}
new AttendanceDAL().Generation(sql,sqlparams);
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
public void Generation(string sql, List<SqlParameter> paramters)
{
DataTable table = SqlHelper.ExecuteDataTable(sql, paramters.ToArray());//上午
for (int i = 0; i < table.Rows.Count; i++)
{
DataRow row = table.Rows[i]; }
多了=0
wherelist.Add("@Date=0"); <-参数应该为 int
sqlparams.Add(new SqlParameter("@Date","datediff(M,日期时间," +"'"+dt.ToShortDateString()+"'"+ ")
= 0")); <- 实际参数是 varchar
当然报错..
老老实实拼sql语句吧
别乱用
我的意思去掉"=0" 就是把你的@Date 转换为 数据库的操作 datediff是数据库的操作 而且你之前也说了在数据库中那语句成功了 现在只是把@Date 放到数据库中 而不是在C#里面操作datediff