日期时间中,对日期的查询问题,在线等
数据库中日期使用varchar2型的,格式为:2007-02-02 10:20,字段名成为aa,现在我要对该字段进行日期的查询,该如何写sql语句?
select * from riqidata where aa like "+ksdate.text+ ";提示查询错误!!!
其中ksdate.text= "2007-02-02 "
请大侠帮忙……
------解决方案--------------------datediff()
------解决方案--------------------select * from riqidata where aa = ' "+ksdate.text+ " ' ";
或这样:
string sql = select * from riqidata where aa = '{0};
sql = string.Format(sql, ksdate.text);
------解决方案--------------------这样的:
string sql = "select * from riqidata where aa = '{0} ' ";
sql = string.Format(sql, ksdate.text);
------解决方案--------------------select * from riqidata where Convert(varchar(10),aa,120)
= "+Convert.todatetime(ksdate.text).ToString( "yyyy-MM-dd ")+ ";
------解决方案--------------------因为你的数据库里存放的时候字符串.包括了小时,分种,秒等信息.而你查询的字段却只有年月日.
用=永远都不会对.最好的办法是.把你传入的日期分成2个就进行比较.
如: 你要查询2007-02-02 的记录.你可以把他分成2条.
你去数据库查询
2007-02-01 23:59:59 与 2007-02-02 23:59:59之间的记录.
也就是: 字段名> 2007-02-01 23:59:59 and 字段名 <=2007-02-02 23:59:59
那么查询出来的记录就一定是2007-02-02日内的.不管你的小时,分种,秒是多少.
总是跑不出2007-02-02日的
------解决方案--------------------就是说.对于你传入的日期参数.你需要先把他出来成 带小时带分种,秒的数据.
你可以写个方法来转化.
当然也还有其他的办法.
你可以把数据库的哪个日期字段用字符串函数截取 成2007-02-02这中格式.在进行比较.
------解决方案--------------------string sql = "select * from riqidata where substr(aa,1,10) = '{0} ' ";
sql = string.Format(sql, ksdate.text);
用substr 取出aa字段的前10位就可以了。
------解决方案--------------------select * from riqidata where Convert(varchar(10),aa,120)
= "+Convert.todatetime(ksdate.text).ToString( "yyyy-MM-dd ")+ ";
------解决方案--------------------sqlstring= "select * from "+datalist.SelectedItem.Value+ " where left( "+fieldlist.SelectedItem.Value+ ",10)= ' "+ksdate.Text.Trim()+ " ' order by id desc ";
就是说
数据库里 为2007-02-02 10:20 用left()函数去前10为left( '2007-02-02 10:20 ',10) 的到 '2007-02-02;
------解决方案--------------------看看
------解决方案--------------------if ur database is oracle, i think you must write code like this : select * from riqidata where aa like to_date( ' "+ksdate.text+ " ', 'yyyy-MM-dd '); ".