我的表格中有记录测试,我的日期列的类型为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>");
}
答案 0 :(得分:1)
使用Convert(datetime,fieldname,103)将varchar转换为datetime。
你的查询应该是这样的。
从Test中选择* 其中转换(datetime,field_date,103)&gt; ='2011-01-01' - 开始日期
和转换(datetime,field_date,103)&lt; ='2012-01-01'; - 结束日期
这就是你的C#语句应该是这样的(它应该包含 103 代码来指定你的日期格式dd-mm-yyyy
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);
答案 1 :(得分:0)
SELECT colname FROM tablename WHERE somecol&gt; ='2011-01-09'AND somecol&lt; =''2011-09-24'
答案 2 :(得分:0)
从测试中选择*,其中日期&gt; ='2011-09-02'和日期&lt; '2011-0-04'
答案 3 :(得分:0)
查看BETWEEN SQL运算符。还要确保使用标准SQL Server格式正确格式化日期以避免和潜在的混淆:yyyymmdd hhmmss,并记住也考虑日期的时间部分。
答案 4 :(得分:0)
以下sql语句已针对我们公司的sql server 2008进行了测试,并且运行正常。
SELECT *
FROM some_table
WHERE date_field >= '2011-10-25' and date_field <= '2011-11-26'