![](/img/trans.png)
[英]SQL Server / C# : Filter for System.Date - results only entries at 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.