簡體   English   中英

SQL Server和C#:篩選System.Date-僅在00:00:00生成結果條目

[英]SQL Server & C# : filter for System.Date - results only entries at 00:00:00

我在Visual Studio中有一個已連接的SQL Server數據庫,並且正在網格中顯示其內容。 我創建了一個下拉菜單,其中的列名是可選選項,並且提供了一個文本字段以過濾特定內容,例如,DropDown =“ Start”-Textfield = 14.03.2015 =過濾包含“ 14.03.2015”的每個條目的“ Start”列“-並將其顯示在網格中。

我基本上已經完成了那部分。 我所面臨的唯一問題是,無論何時我輸入日期-例如,14.03.2015它僅顯示以00:00:00開始的日期-其他不以00:00:00開始的條目將被忽略,我不知道如何修改它才能正常工作。

網格看起來像這樣: http : //abload.de/img/untitled123yqkyn.png

我正在使用以下C#代碼進行過濾:

protected void Button1_Click(object sender, EventArgs e)
{
    string FilterExpression = string.Empty;

    if (DropDownList1.SelectedValue.ToString().Equals("Start"))
    {
        FilterExpression = string.Format("Start  = '{0}'", TextBox1.Text);
    }
    else if (DropDownList1.SelectedValue.ToString().Equals("End"))
    {
        FilterExpression = string.Format("End  = '{0}'", TextBox1.Text);
    }
    else if (DropDownList1.SelectedValue.ToString().Equals("Creation Time"))
    {
        FilterExpression = string.Format("DateTimeCreated = '{0}'", TextBox1.Text);
    }
    else if (DropDownList1.SelectedValue.ToString().Equals("Last Modified"))
    {
        FilterExpression = string.Format("LastModifiedTime = '{0}'", TextBox1.Text);
    }
    else
    {
        FilterExpression = string.Concat(DropDownList1.SelectedValue, " Like '%{0}%'");
    }

    SqlDataSource1.FilterParameters.Clear();
    SqlDataSource1.FilterParameters.Add(new ControlParameter(DropDownList1.SelectedValue, "TextBox1", "Text"));
    SqlDataSource1.FilterExpression = FilterExpression;
}

對不起代碼的質量,我是C#和編程本身的新手。 我希望有人能夠幫助我。

在日期字段上使用強制轉換語句刪除時間部分,如下所示:

FilterExpression = string.Format("CAST(Start  AS DATE) = '{0}'", TextBox1.Text);
FilterExpression = string.Format("CAST(End    AS DATE) = '{0}'", TextBox1.Text);
FilterExpression = string.Format("CAST(End    AS DATE) = '{0}'", TextBox1.Text);
FilterExpression = string.Format("CAST(LastModifiedTime   AS DATE) = '{0}'", TextBox1.Text);

另外,如果您輸入的是日期,請嘗試以下操作:

FilterExpression = string.Format("CONVERT(date,Start) = '{0}'", TextBox1.Text);
FilterExpression = string.Format("CONVERT(date,End) = '{0}'", TextBox1.Text);
FilterExpression = string.Format("CONVERT(date,End) = '{0}'", TextBox1.Text);
FilterExpression = string.Format("CONVERT(date,LastModifiedTime) = '{0}'", TextBox1.Text);

最后但並非最不重要的一點,如果您輸入的是varchar,請嘗試以下操作:

FilterExpression = string.Format("CONVERT(varchar,Start,101) = '{0}'", TextBox1.Text);
    FilterExpression = string.Format("CONVERT(varchar,End,101) = '{0}'", TextBox1.Text);
    FilterExpression = string.Format("CONVERT(varchar,End,101) = '{0}'", TextBox1.Text);
    FilterExpression = string.Format("CONVERT(varchar,LastModifiedTime,101) = '{0}'", TextBox1.Text);

暫無
暫無

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

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