当前位置:编程学习 > C#/ASP.NET >>

C# 关于SQL查询语句

            string st = dateTimePicker1.Value.ToShortDateString();
            st = st + "%";
            String str = "Server=.;database=Mytest;uid=sa;pwd=123";
            SqlConnection conn = new SqlConnection(str);
            conn.Open();
            SqlCommand com = new SqlCommand("select * from Mytest where  Convert(varchar(20),data,120) like '"+st+"'", conn);
            SqlDataReader sdr = com.ExecuteReader();
            while (sdr.Read())
            {
                MessageBox.Show(sdr[0].ToString());
            }

为什么st的值不能传到sql语句中,把st换成2010-05-20%是可以的这是怎么回事啊? --------------------编程问答-------------------- 时间在SQL SERVER 是有固定的格式的

你可以用CONVERT(……)转 --------------------编程问答-------------------- 你数据库保存的日期的格式可能是yyyy-MM-dd hh:mm:ss
--------------------编程问答-------------------- ToShortDateString 是短时间类型"2010-02-20";数据库中的data是“2010-02-20 00-00-00”
你在SQL的时候把他们都能成字符了,用LIKE不加%肯定不行啊
家里米数据库,不然就可以给你演示一下了。 --------------------编程问答-------------------- 我不是写了 st=st+"%"了吗? --------------------编程问答--------------------
引用 3 楼 qq234121906 的回复:
ToShortDateString 是短时间类型"2010-02-20";数据库中的data是“2010-02-20 00-00-00”
你在SQL的时候把他们都能成字符了,用LIKE不加%肯定不行啊
家里米数据库,不然就可以给你演示一下了。

应该可以 --------------------编程问答--------------------

select Convert(varchar(20),time,120) from Counseling 

2010-03-23 00:00:00
2010-03-23 00:00:00
2010-03-23 00:00:00
2010-03-28 12:39:30
2010-03-28 12:39:50



把st换成2010-05-20%是可以的这是怎么回事啊?

2010-03-23 00:00:00 like '2010-05-20%' --------------------编程问答-------------------- 用这种方式结构清晰点。
估计是不是拼接字符串的时候有问题。
string sqlModel="select * from Mytest where Convert(varchar(20),data,120) like '{0}'%";
SqlCommand com = new SqlCommand(string.Format(sqlModel,st ), conn); --------------------编程问答-------------------- 设断点看看st 是多少 --------------------编程问答-------------------- select * from Mytest where Convert(varchar(10),data,120) 
10长度就好了  刚好匹配日起 百分号在后面 表示匹配2010-05-20开始的日期  懂了没 --------------------编程问答-------------------- 我觉得直接用=来匹配性能会好点,用like会比较慢 --------------------编程问答-------------------- 这就是SQL 的模糊查询啊 --------------------编程问答-------------------- 如果可以的话,建议用BETWEEN --------------------编程问答-------------------- 我就想知道问题到底出在那哈 --------------------编程问答-------------------- 因为:%表示模糊查询,有了这个,就相当于是按条件查询,所以,可以用! --------------------编程问答-------------------- 想不麻烦就把数据库里边的日期该成varchar行的 --------------------编程问答-------------------- 不知道大家注意到这点没有dateTimePicker1.Value.ToShortDateString()的值存在4种格式“2010-5-1”,"2005-5-12","2005-10-5","2005-10-25"而数据库里的datatime的格式为“xxxx-xx-xx xx:xx:xx”问题就出在这里哈。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,