怎么实现时间字符段的连接,时间一定时间短的SQL查询。

在查询时在BOX1和TEXTBOX2中输入起始时间,点击BUTTON按钮查询,这是语句,string beginTime =TextBox1.Text.ToString();
string endTime =TextBox2.Text.ToString();
SqlDataAdapter sqlAdapter = new SqlDataAdapter("select * from CardRecord where convert(varchar(10),date,112) between beginTime=" + TextBox1.Text + " and endTime)", sqlCon);
sqlAdapter.Fill(ds);
GridView1.DataSource = ds.Tables[0];
GridView1.DataBind();
其中 sqlAdapter.Fill(ds);这个语句老是出错,为什么
,求改正,我是新手

第1个回答  2011-07-27
具体看你是ORACLE还是SQL,写法不一样
ORACLE:select * from table where time between to_Date(20091001,'yyyymmdd') and to_date(20091001235959,'yyyymmddhh24miss')

SQL:select * from table where time between '2009-10-01' and '2009-10-02 23:59:59'
以上是TIME列是日期格式的时候用,如果是字符格式,就简单些了.
select * from table where time between '2009-10-01' and '2009-10-02 23:59:59'
这样就行.

呵呵,'yyyymmdd'和'yyyymmddhh24miss'是指日期的格式.
yyyy对应年(YEAR),MM对应月(MONTH),DD对应日(DAY),HH对应小时(HOUR),24代表24小时制,MI代表分钟(minute),SS代表秒(SECOND).前面的日期多长,后面的格式就要对应多长.比如20091001对'yyyymmdd',20091001235959对'yyyymmddhh24miss'
另外,虚机团上产品团购,超级便宜
第2个回答  2011-07-27
具体看你是ORACLE还是SQL,写法不一样
ORACLE:select * from table where time between to_Date(20091001,'yyyymmdd') and to_date(20091001235959,'yyyymmddhh24miss')

SQL:select * from table where time between '2009-10-01' and '2009-10-02 23:59:59'
以上是TIME列是日期格式的时候用,如果是字符格式,就简单些了.
select * from table where time between '2009-10-01' and '2009-10-02 23:59:59'
这样就行.

呵呵,'yyyymmdd'和'yyyymmddhh24miss'是指日期的格式.
yyyy对应年(YEAR),MM对应月(MONTH),DD对应日(DAY),HH对应小时(HOUR),24代表24小时制,MI代表分钟(minute),SS代表秒(SECOND).前面的日期多长,后面的格式就要对应多长.比如20091001对'yyyymmdd',20091001235959对'yyyymmddhh24miss'
另外,虚机团上产品团购,超级便宜
第3个回答  2011-07-26
"select * from CardRecord where convert(varchar(10),date,112) between beginTime=" + TextBox1.Text + " and endTime)"
运行到这里,看看这个字符串等于什么,复制到sql服务器上运行,看能不能运行。 我没仔细看,随便看一眼,就发现最后多了一个右括号。
第4个回答  2011-07-26
"select * from CardRecord where convert(varchar(10),date,112) between beginTime=" + TextBox1.Text + " and endTime)",
sql语句写错啦
改成
"select * from CardRecord where convert(varchar(10),date,112) between '" + beginTime+ "' and '" +endTime+ "')",

晕,你数据库里要比较的时间字段是啥呀追问

搞不懂了数据库存放的时间段是这样的:2011-7-3 19:02 。通过 convert(varchar(10),date,112)变成20110703,然后和TEXTBOX1和textBOX2 控件中输入的内容比较时间段,然后进行查询

追答

问你字段的信息呀。是什么呢?比如:CreateTime datetime

追问

MEAL_TIME

追答

"select * from CardRecord where MEAL_TIME between '" + beginTime+ "' and '" +endTime+ "')",
这样OK啦,时间比较无需任何转化!!

本回答被提问者采纳
第5个回答  2011-07-26
SqlDataAdapter sqlAdapter = new SqlDataAdapter("select * from CardRecord where convert(varchar(10),date,112) between " + TextBox1.Text + " and " + TextBox2.Text + ")", sqlCon);

这句改成这样试试追问

sqlAdapter.Fill(ds);错误还是处在这个地方

追答

你这个是啥语言啊,试试看这句
SqlDataAdapter sqlAdapter = new SqlDataAdapter("select * from CardRecord where MEAL_TIME between '" + begintime+ '" and '" + endtime + "')", sqlCon);

在 SQL里面是字符串表示时间是要加上单引号的 ,你要在begintime和endtime的前后加上单引号