【问题标题】:I Need To Validate Entair date in Start and end date我需要在开始和结束日期中验证 Entair 日期
【发布时间】:2012-07-27 09:10:10
【问题描述】:
string queryStr = "SELECT * from Task_Report_Table where convert(varchar, date, 105) between '" + txtStartDate.Text.ToString() + "' and '" + txtEndDate.Text.ToString() + "'  ";

这是我用于从数据库中检索值的查询。

在数据库表Task_Report_Table中有列日期,名称,任务和小时。这里的日期是日期时间数据类型,所以在查询中转换成字符串和我匹配th

我有一个带有开始日期和结束日期的 UI。通过在 UI 中给出日期。上述提及查询必须显示记录。

如果我给予开始日期 07-07-2012 和结束日期为 12-07-2012。它显示的值介于 07-07-2012 和 12-07-2012 值之间。但问题是它显示下一个月和前几个月的记录以及下一年和上一年的记录如果数据库中存在记录。

问题是它仅验证日期。而不是月份和年份。 我需要在 UI 中验证 iam Giving 的日、月、年。

【问题讨论】:

    标签: c# sql-server-2008


    【解决方案1】:

    你不想写这样的 SQL,不要将字符串连接在一起,使用这种代码很容易破解(通过 SQL 注入)网站。

    试试这个:

    SELECT * from Task_Report_Table where date between @startdate and @enddate
    

    然后将 startdate 和 enddate 作为 SqlParameter 添加到您正在使用的 SqlCommand 中,如下所示:

    SqlCommand command = new SqlCommand(yourSQL, connection);
    command.Parameters.Add(new SqlParameter("startdate", DateTime.Parse(txtStartDate.Text)));
    command.Parameters.Add(new SqlParameter("enddate", DateTime.Parse(txtEndDate.Text)));
    

    【讨论】:

    • 在数据库中我只有日期列。通过查询我必须显示。所以必须像这样表示查询。我认为。
    • 试用代码,它的工作方式与您发布的代码完全相同,只是更安全,而且您不必担心从用户那里收集的日期的格式,DateTime.Parse 会做给你!
    【解决方案2】:

    问题是它仅验证日期。而不是月份和年份。我需要 验证日、月、年

    这个convert(varchar, date, 105) 会给你一个看起来像这个27-07-2012 的字符串,而不是一个日期。所以你的查询比较的是字符串而不是日期。

    使用@SteenT建议的日期参数。

    【讨论】:

      【解决方案3】:

      试试这样 为文本框放置两个变量..

      txtStatrdate.text=strdate;
      
      txtEndDate.text=enddate  ; 
      
      CONVERT(VARCHAR(10),date,101) BETWEEN CONVERT(DATETIME,strdate,101) AND
              CONVERT(DATETIME,enddate,101)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-17
        • 1970-01-01
        • 2018-01-31
        • 2012-08-31
        相关资源
        最近更新 更多