如何在日期范围内查看记录?
我在我的表测试这样我日期列的类型为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>");
}
建立查询使用Convert(日期时间,字段名,103)转换为varchar为datetime。
您的查询应该是这样的。
SELECT * FROM测试 其中转换(日期时间,field_date,103)> = '2011-01-01' --start日期
和转换(日期时间,field_date,103)< =' 2012-01-01'; --end日期
这是你的C#语句应该怎么样子(它应该包括代码指定
SqlCommand cmd = new SqlCommand("select Fname,Lname,Insert_Date from Test where Convert(datetime,Insert_Date,103) >= '" + Convert.ToDateTime(TextBox1.Text).ToString(format) + "' and Convert(datetime,Insert_Date,103) <= '" + Convert.ToDateTime(TextBox2.Text).ToString(format) + "' ", con);
它给了我“为datetime数据类型varchar数据类型的转换导致一个超出范围的值“ –
你得到它,因为我忘记了为你的日期指定样式编号103。请参阅以下链接了解样式格式[链接] http://www.sqlusa.com/bestpractices/datetimeconversion/ – Habib
SELECT colname的FROM表名WHERE somecol> = '2011-01-09' AND somecol < = '2011-09-24'
SELECT * FROM Test其中,日期> ='2011-09-02'和日期<'2011-0-04'
下面的SQL语句已经过测试,其中DD-MM-YYYY的日期格式对我们公司的SQL Server 2008和工作正常。
SELECT *
FROM some_table
WHERE date_field >= '2011-10-25' and date_field <= '2011-11-26'
你尝试过什么的C#这么远吗?哪个版本?短LINQ语句应该给你一个非常好的解决方案。 – Matten
从数据库这个拉?如果那么,什么数据库是吗?或者它保存在内存中? –
是其从SQL Server 2008 R2 .. –