在C#和SQL中格式化日期

时间:2015-01-30 10:48:31

标签: c# sql date format

我在互联网上搜索过但我无法找到解决方案。我想这样做:

if (Convert.ToString(form1.searchBox.SelectedItem) == "Date")
{
    val = (sender as TextBox).Text;
    sqlCmd = new SqlCommand(
        "SELECT * FROM ["TableName"] WHERE ["Date"] LIKE '" + 
         filterFunc().Trim() + "%'", connection);
}

所以我有一个Searchbox(文本框),可以输入内容并显示在数据库中。这适用于整数和字符串,但不知何故,他遇到了上面的日期值的问题(它在"日期"在我的SQL数据库中)。当我想要获取值时,我会收到错误。我试图在SQL字符串和C#中转换和转换它,但没有任何帮助!

1 个答案:

答案 0 :(得分:0)

问题是你不能用日期做个喜欢。 为清晰起见,您可以使用参数化查询,并将您的日期数据类型转换为:

using (SqlCommand command = new SqlCommand(
  "SELECT * FROM ["+TableName+"] WHERE convert(varchar(10),[Date],112) like @Date", connection))
{
    command.Parameters.Add(new SqlParameter("Date", filterFunc().Trim() + "%"));
    SqlDataReader reader = command.ExecuteReader();
    while (reader.Read())
    {
        string val1 = reader.GetString(0);
        string val2 = reader.GetString(1);
        Console.WriteLine("Val 1= {0}, Val2 = {1}", val1, val2);
    }
}

另请注意,出于性能原因,您不应该执行LIKE,而是使用BETWEEN进行日期查找。