C# 如何查看日期范围内的记录?

C# 如何查看日期范围内的记录?,c#,sql,datetime,C#,Sql,Datetime,我的表测试中有这样一个记录,我的日期列是varchar类型的 Fname Lname Date vivek parikh 01-09-2011 10:00:00 PM kashyap vyas 02-09-2011 10:50:00 AM viral panchal 02-09-2011 10:00:00 PM Arpit Gosai 03-09-2011 10:00:00 PM Da

我的表测试中有这样一个记录,我的日期列是varchar类型的

Fname      Lname      Date  
vivek      parikh     01-09-2011 10:00:00 PM  
kashyap    vyas       02-09-2011 10:50:00 AM  
viral      panchal    02-09-2011 10:00:00 PM  
Arpit      Gosai      03-09-2011 10:00:00 PM  
Darshit    Chokshi    04-09-2011 10:00:00 PM  
Sameer     Rangrez    24-08-2011 9:15:12 AM  
我想从页面中获取日期范围开始日期和结束日期内的记录

我的代码是

 DateTime time = DateTime.Today;             // Use current time
    string format = "MM-dd-yyyy";

    SqlCommand cmd = new SqlCommand("select Fname,Lname,Insert_Date from Test where Insert_Date >= '" + Convert.ToDateTime(TextBox1.Text).ToString(format) + "' and Insert_Date <= '" + Convert.ToDateTime(TextBox2.Text).ToString(format) + "'  ", con);
    DataSet ds = new DataSet();
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    da.Fill(ds);

    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
    {
        Response.Write(ds.Tables[0].Rows[i]["Fname"].ToString());
        Response.Write(ds.Tables[0].Rows[i]["Lname"].ToString());
        Response.Write(ds.Tables[0].Rows[i]["Insert_Date"].ToString()+"<br>");
    }

从tablename中选择colname,其中somecol>='2011-01-09'和somecol从Test中选择*,其中Date>='2011-09-02'和Date检查SQL运算符。另外,请确保使用标准SQL Server格式正确格式化日期,以避免和潜在的混淆:yyyymmdd hhmmss,并记住还要考虑日期的时间部分。

要生成查询,请使用datetime,fieldname,103将varchar转换为datetime

您的查询应该类似于

从测试中选择* 其中Convertdatetime,字段_date,103>='2011-01-01'-开始日期


下面的sql语句已经在我们公司的sql server 2008上进行了测试,运行良好

SELECT *
FROM some_table
WHERE date_field >= '2011-10-25' and date_field <= '2011-11-26'

到目前为止你试过什么?哪个版本的C?一个简短的LINQ语句应该会为您提供一个非常好的解决方案。这是从数据库中提取的吗?如果是,它是什么数据库?或者它保存在内存中?是的,它来自sql server 2008 r2。如果它在sql server 2008中,则使用<或>进行简单的日期比较将不起作用,因为列类型为varchar。请解释你想要什么解决方案,您需要sql查询还是需要linq表达式来获取该数据?我需要sql查询,从中可以通过比较日期来获取准确的日期。它将varchar数据类型转换为datetime数据类型,导致值超出范围。您正在获取该数据,因为我忘了为日期指定样式号103。有关样式格式,请参见以下链接[链接]
SELECT *
FROM some_table
WHERE date_field >= '2011-10-25' and date_field <= '2011-11-26'