【发布时间】:2015-07-13 02:47:52
【问题描述】:
我想允许用户按开始日期进行搜索。我遇到了这个,但我不知道如何修改它,以便如果用户输入 7,它将检索所有 7 月开始日期数据或日期 7 的任何月份。
示例:用户输入 7 并搜索,输出将是:7/2/2015 或 2/7/2015。
protected void btnSearch_Click(object sender, EventArgs e)
{
string constr = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("SELECT OrderID, OrderDate, ShipName, ShipCity FROM Orders WHERE OrderDate BETWEEN @From AND @To", con))
{
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
cmd.Parameters.AddWithValue("@From", Convert.ToDateTime(this.txtFrom.Text, new CultureInfo("en-GB")));
cmd.Parameters.AddWithValue("@To", Convert.ToDateTime(this.txtTo.Text, new CultureInfo("en-GB")));
DataSet ds = new DataSet();
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
}
}
}
}
【问题讨论】:
-
DateTime startDate = new DateTime(2015, 7, 1)。按国家/地区文化(月-日与日-月)输入日期时间并不简单,因为您需要将国家/地区添加到代码中。而是让用户输入通用时间,即 yyyy-mm-dd。
-
@jdweng 对不起,我不明白。我想进行搜索,然后数据将检索并绑定到 gridview 。如何更改 sql 命令?
-
您的意思是,如果用户输入 7,那么您的应用程序应该检索 7 月份的所有记录?
-
您的订单日期字段类型是什么?是 varchar 还是 datetime ?
-
你不需要改变sql命令,只要你输入参数的方式。现在,您正在使用 Convert.ToDateTime() 方法从字符串中获取 DataTime 对象。我建议使用带有数字的 DataTime 构造函数。