0

我有 2 个日期时间选择器。在我的选择查询中,我想获取这些日期之间的记录。varchar(MAX) 中数据库中日期的数据类型。对于 datetimepicker,我将自定义格式设置为 dd-MM-yyyy。这是我的 sql 查询

SqlDataAdapter da = new SqlDataAdapter("Select custname From tb_customer WHERE date >= '"+dtp_fromdate.Text+"' AND date <= '"+dtp_todate.Text+"'", con);

例如:如果我的开始日期是 9-06-2012 并且到目前为止是 11-06-2012。通过上面的查询,它显示了 10-06-2012 和 11-06-2012 的记录

如果我的开始日期是 10-06-2012 并且到目前为止是 11-06-2012。通过上面的查询,它显示了 10-06-2012 而不是 11-06-2012 的记录

请帮忙

4

2 回答 2

1

使用ConvertCastT-SQL 将VARCHAR值转换为DateorDateTime并学习/使用参数而不是硬编码的 SQL 字符串。

于 2012-06-09T09:22:22.253 回答
0

问题在于没有使用参数。使用参数将避免您与您的数据库后端之间的任何误解

DataSet ds = new DataSet();
using (SqlConnection con = new SqlConnection(connectionString))
{
    SqlDataAdapter da = new SqlDataAdapter();
    string query = "Select custname From tb_customer WHERE date >= @from AND date <= @to"
    da.SelectCommand = new SqlCommand(queryString, con);
    da.SelectCommand.AddWithValue("@from" , dtp_fromdate.Value);
    da.SelectCommand.AddWithValue("@to" , dtp_to.Value);
    da.Fill(ds);
    return ds;
}
于 2012-06-09T09:31:07.200 回答