datediff(M,日期时间,'2013/1/16') = 0 使用

lflsg 2013-04-22 04:31:02
select * from Sheet where 姓名='焦鹏飞' and datediff(M,日期时间,'2013/4/22') = 0


我VS SQL Sever 中使用上述 查询语句 执行成功,但是我在C#中提示:


在将 nvarchar 值 'datediff(M,日期时间,'2013/4/22') = 0' 转换成数据类型 int 时失败。


请问这为啥?那里错了?
...全文
351 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 4 楼 lflsg 的回复:
楼上的回答太不专业了,我找到问题了,问题是:"datediff(M,日期时间1,日期时间2),dateiff 函数C#中没有,参数带的话没法代。
我的意思去掉"=0" 就是把你的@Date 转换为 数据库的操作 datediff是数据库的操作 而且你之前也说了在数据库中那语句成功了 现在只是把@Date 放到数据库中 而不是在C#里面操作datediff
Castiel丶Luo 2013-04-22
  • 打赏
  • 举报
回复
蛋疼的...代码 wherelist.Add("@Date=0"); <-参数应该为 int sqlparams.Add(new SqlParameter("@Date","datediff(M,日期时间," +"'"+dt.ToShortDateString()+"'"+ ") = 0")); <- 实际参数是 varchar 当然报错.. 老老实实拼sql语句吧 别乱用
天下如山 2013-04-22
  • 打赏
  • 举报
回复
你的代码 看得有点蛋疼。。
lflsg 2013-04-22
  • 打赏
  • 举报
回复
楼上的回答太不专业了,我找到问题了,问题是:"datediff(M,日期时间1,日期时间2),dateiff 函数C#中没有,参数带的话没法代。
  • 打赏
  • 举报
回复
wherelist.Add("@Date=0"); 多了=0
lflsg 2013-04-22
  • 打赏
  • 举报
回复
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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]; }
  • 打赏
  • 举报
回复
c# 中完整代码贴上来

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧