簡體   English   中英

選擇關鍵字require>而不是=

[英]Select keyword require > instead of =

如果我在TextBox1.Text下面的行中使用=而不是>,則為“ regdate> '12 / 12/2012 8:27:09'”;

它返回我零行。 任何原因 ?

        DataView dv1 = new DataView ();
        DataSet ds = new DataSet ();
        DataTable dt = new DataTable();

        /*
         col1   col2            col3    col4            col5
         1      sw@yahoo.com    sw      Stephen Walther 12/12/2012 8:27:09 PM
         2      as@yahoo.com    as      Al Stevens      12/12/2012 8:27:09 PM
        */

//這是用於基於datetime選擇幾行的代碼和標准。

        TextBox1.Text = "regdate > '12/12/2012'";

        //connection created 

        SqlConnection con = new SqlConnection(SqlDataSource1.ConnectionString);
        con.Open();
        SqlDataAdapter da = new SqlDataAdapter ("SELECT * FROM users",con);
        da.Fill (ds);

        // filtering criteria applied .
        DataRow[] dr = ds.Tables["Table"].Select(TextBox1.Text);

         //columns created
        dt.Columns.Add("col1", typeof(int));
        dt.Columns.Add("col2", typeof(string));
        dt.Columns.Add("col3", typeof(string));
        dt.Columns.Add("col4", typeof(string));
        dt.Columns.Add("col5", typeof(DateTime));

         // data added
        foreach (DataRow item in dr)
        {
            dt.Rows.Add(item.ItemArray);
        }

        // view created
        dv1 = dt.DefaultView ;
        GridView1.DataSourceID = string.Empty; 
        GridView1.DataSource = dv1 ;
        Page.DataBind(); 

由於時間部分正在停止比賽-試圖匹配日期和時間。

您可以嘗試使用某種DATEDIFF函數來匹配日期部分

如何在T-SQL中測試兩個日期時間是否相等(忽略它們的時間成分)?

但是-修改代碼時要特別小心-不要開始將文本框輸入放到SQL語句中。 注射攻擊風險充沛。

我認為您現在還可以,但是....

因為它是一個datetime字段,所以它將比較整個日期和時間值,而不僅僅是日期。

12/12/2012 8:27:09 PM12/12/2012並不相同,因為12/12/2012被擴展為12/12/2012 12:00:00 AM值到datetime值。 datetime值不會被截斷以與日期值相當。

通常,當數據類型不適合進行比較或計算時,較小的類型將擴展為較大的類型,這樣就不會造成無意的數據丟失。

數據庫以(大約)毫秒的分辨率存儲日期。 當顯示“ 12/12/2012 8:27:09 PM”時,可能會顯示一個毫秒部分,但該日期與未指定這些毫秒的日期進行比較。

在“>”比較會成功,因為存儲的日期因為那些毫秒的精確比您指定的日期較高。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM