无法在 System.DateTime 和 System.String 上执行“Like”操作。
如题,我的意思是查询某月某日的记录,数据库里存的是日期格式,窗体界面上用monthCanlder1控件选择一个日期后,单击查询按钮 出现需要的数据,查询按钮代码如下:string strRowFilter = "";
if (this.comboBox1.Text.Trim() != "")
strRowFilter += "登记日期 like '%" + comboBox1.Text.Trim() + "%' and ";
if (strRowFilter != "")
strRowFilter = strRowFilter.Substring(0, strRowFilter.Length - 5);
tempTable.DefaultView.RowFilter = strRowFilter;
点击按钮后即出现 无法在 System.DateTime 和 System.String 上执行“Like”操作。这个提示,怎么才能把ComboBox中的日期格式转换为字符串格式,完成查询,请大家指点一下,谢谢了!! 把like后面的单引号换成英文输入法的单引试一下? 确实是英文符号,我其它地方也用到过这段代码,不过那个就是字符串格式的,没有问题,还是日期格式跟字符串格式的转换问题。 不好意思。刚我也粘了一个帖,发现英文输入法的单引号粘到论坛里显示得像中文一样。所以刚才的建议无效。抱歉 看看这样行不行:
datetime d1=convert.todatetime(comboBox1.Text.tostring()); 你的意思就是ComBox控件里是字符串格式了?我觉得从日期控件里选出来的应该就是日期格式了吧,我感觉现在的问题应该是怎么把日期格式变化成字符串格式。 我刚才按照你的意思试了一下,出现的提示是:无法将类型“string”转换为“System.DateTime” 我昨天刚用了这个句子啊,应该没问题。我昨天的句子是这样写的:
DateTime leaveTime = Convert.ToDateTime((string)updateReader[0]);
是不是你的combobox中的格式不对?要写成"2003-01-01 18:20:01"或者某年某月某日的形式 日期转化成字符串是string s=date.ToString("yyyy-MM-dd HH:mm:ss"); date是你那个日期的实例
呵呵,我在线等我的帖答案,整半天全在你的帖子里灌水了,也不知道能不能帮上忙 呵呵,真的很感谢你的!
我的ComboBox里的日期不是我写上去的 而是从MonthCanlder1控件上选择出来的,都是这个格式2003-01-01 18:20:01的, DateTime leaveTime = Convert.ToDateTime((string)updateReader[0]);这个格式是将字符串转换成日期格式的,我先试试你string s=date.ToString("yyyy-MM-dd HH:mm:ss");这个语句。 我就把date改成comboBox1了,不知道是不是这个意思,然后就说“ToString”方法采用“1”一个参数的重载, 应该是改成combobox.text吧?
不知道你的问题解决了没有?要不看看高手怎么说?
我刚刚跑到实验室问同学去了,但还是没有解决我的问题,郁闷~~~ 你可以DataTime.Parse(字符串).ToLocalDateString();不知道后面的单词有没有写错,,,呵呵 不好意思,说错了,是DateTime time = DateTime.Now;
this.textBox1.Text=time.ToShortDateString();这样可以显示出2008-5-9,不知道符不符合你的要求 textBox控件里显示的是日期格式,我觉得问题是出在我的查询代码里,那段代码好像查询的就是字符串之类的,而我输入的是日期格式,数据库里保存的也是日期格式,所以总是提示不能在字符串和日期格式之间操作,也就是无论我输入的是日期还是希字符串,数据库里的日期格式跟查询代码也还是字符串与日期格式,不能互通。这是我的理解。不知道查询日期格式的代码怎么写。 那你就全部显示出来,拿到页面上操作,将日期输出字符串这样就好比较了,不同的就contine;相同的就留下,要不你就换个方法,干嘛非要用like 像between and 也不错 我决定把登记日期全换成字符串格式的,这样就简单多了! 直接将数据库读出来的时间转换成时间型的,原本数据库是时间型,读出来就成了字符型,看看下面这个对不:
strRowFilter += "登记日期 like '%" + to_date('"+comboBox1.Text.Trim()+"','yyyy-mm-dd hh24:mi:ss') + "%' and "; 我还没试行不行,不过上边的写法有错误,我改成这样了:strRowFilter += "登记日期 like '%" + to_date("+comboBox1.Text.Trim()+","yyyy-mm-dd hh24:mi:ss") + "%' and ";但是不管怎么写 总体是让生成to_date方法存根。
页:
[1]
