关于 C# System.Data.SqlClient.SqlException:“从字符串转换日期和/或时间时,转换失败

这几天在写业务根据部门号和日期查询数据时,报如下错误: System.Data.SqlClient.SqlException:“从字符串转换日期和/或时间时,转换失败

/// <summary>
/// 根据部门号和日期查询数据
/// </summary>
/// <param name="dept_code">部门号</param>
/// <param name="date">日期(传空则为今天)</param>
/// <returns></returns>
[HttpGet]
public DataTable testTime(string dept_code, string date) {
    //connStr里的内容省略了
    string connStr = "Server=;Initial Catalog=;User ID=;Password=";
    SqlConnection con = new SqlConnection(connStr);
    con.Open();
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con;
    cmd.CommandType = CommandType.Text;
    StringBuilder sqlStr = new StringBuilder();
    sqlStr.Append("select * from table where createTime between " +
    " '@date 00:00:00' and '@date 23:59:59' and deptCode = @dept_code");
    if(String.IsNullOrEmpty(date))
    {
        date = DateTime.Now.Date.ToString("yyyy-MM-dd");
    }            
    cmd.Parameters.Add(new SqlParameter("@dept_code", SqlDbType.NVarChar));
    cmd.Parameters["@dept_code"].Value = dept_code;
    cmd.Parameters.Add(new SqlParameter("@date", SqlDbType.NVarChar));
    cmd.Parameters["@date"].Value = date;
    cmd.CommandText = sqlStr.ToString();
    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
    DataTable dataTable = new DataTable();
    adapter.Fill(dataTable);
    con.Close();
    return dataTable;
}

发现是我的sql语句对 @date参数 的拼接有问题,应该把其拼接成 ' ' 的形式,修改成:

//原本错误的
sqlStr.Append("select * from table where createTime between " +
    " '@date 00:00:00' and '@date 23:59:59' and deptCode = @dept_code");
//正确的
sqlStr.Append("select * from re_gembaWalkStatistics where createTime between " +
    " @date + ' 00:00:00' and @date + ' 23:59:59' and deptCode = @dept_code");
  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值