日期:2014-05-19  浏览次数:20402 次

日期时间中,对日期的查询问题,在线等
数据库中日期使用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 '); ".