使用C#将ASP.NET中文本框中的日期与数据库中的日期进行比较

时间:2017-01-15 17:10:31

标签: c# asp.net sql-server date

我正在尝试比较我在DD.MM.YYYY格式的文本框中输入的日期,但我收到错误。

string txt = "select count(*) from cont where Data_deschiderii < " + Convert.ToDateTime(TextBox1.Text).ToString("DD.MM.YYYY");

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
conn.Open();

SqlCommand cmd = new SqlCommand(txt, conn);
int x = Convert.ToInt32(cmd.ExecuteScalar().ToString());
Response.Write(x);

我怎么能这样做?我在网上找不到任何东西

4 个答案:

答案 0 :(得分:3)

最好的方法是开始使用准备好的参数化查询。它们确保正确完成比较,并防止SQL注入攻击的可能性。

您的代码将被重写为:

string txt = "select count(*) from cont where Data_deschiderii < @compareDate;"; 
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
conn.Open();
SqlCommand cmd = new SqlCommand(txt, conn);
cmd.Parameters.Add("@compareDate", SqlDbType.Date);
cmd.Parameters["@compareDate"].Value = TextBox1.Text;
int x = Convert.ToInt32(cmd.ExecuteScalar().ToString());
Response.Write(x);

也就是说,我假设您的数据库字段Data_deschideriidate形式的数据类型。

答案 1 :(得分:0)

您需要将日期时间转换为SQL理解的内容。

var formattedDate = Convert.ToDateTime(TextBox1.Text).ToString("yyyy-MM-dd HH:mm:ss");

然后在查询中使用formattedDate

答案 2 :(得分:0)

您应该在时间跨度内转换日期时间,然后以秒为单位比较该时间跨度。在SQL中,您可以使用DateDiff函数转换它。

答案 3 :(得分:0)

试试这个。

try
{
  DateTime Date1= Convert.ToDateTime(TextBox1.Text).ToString("yyyy-MM-dd HH:mm:ss");
  DateTime Date2 = Convert.ToDateTime(TextBox2.Text).ToString("yyyy-MM-dd HH:mm:ss");
  if (Date1 > Date2) 
  {
    Your Code...
  }
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}