菜鸟想问查询表里的日期型字段怎么查???(100)

  • 主题发起人 主题发起人 wanglong3
  • 开始时间 开始时间
W

wanglong3

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了两种写法,为什么写法一不好使,而写法二好使呢??写法一procedure TForm1.Button2Click(Sender: TObject);vars1,s2:string;begin s1 := '2008-01-01 12:00:00'; s2 := '2009-01-01 12:00:00'; sql := 'select * from 日期表 where 日期2 between ' + s1 + ' and ' +s2; adoquery1.Close; adoquery1.sql.clear; adoquery1.sql.Add(sql); adoquery1.Open;end;写法二:procedure TForm1.Button2Click(Sender: TObject);vars1,s2:string;begin s1 := '2008-01-01 12:00:00'; s2 := '2009-01-01 12:00:00'; sql := 'select * from 日期表 where 日期2 between :sj1 and :sj2'; adoquery1.close; adoquery1.sql.clear; adoquery1.sql.add(sql); adoquery1.Parameters.ParamValues['sj1'] := s1; adoquery1.Parameters.ParamValues['sj2'] := s2; adoquery1.Open;end;
 
如果是Oracle数据库,你把第一种方法改为:...sql := 'select * from 日期表 where 日期2 between to_date(''' + s1 + ''',''yyyy-mm-dd hh24:mi:ss'') and to_date(''' + s2 + ''', ''yyyy-mm-dd hh24:mi:ss'')';...试试。
 
如果其它的数据库,你改为:...sql := 'select * from 日期表 where 日期2 between ''' + s1 + ''' and ''' + s2 + '''';...试试。注意最终地命令应该是 select * from 日期表 where 日期2 between '2008-01-01 12:00:00' and '2009-01-01 12:00:00' 的形式,所以要用 3 个单引号而不能用 1 个。
 
是的,你把sql := 'select * from 日期表 where 日期2 between ''' + s1 + ''' and ''' + s2 + '''';语句设置一个断点。运行到这个语句后按CTRL,鼠标点一下。可以查看变量SQL的内容设置s1= 2009-12-12 s1= 2009-12-12SQL内容为:'select * from 日期表 where 日期2 between ‘2009-12-12’ and '2009-12-12'就正确啦
 
同意szhcracker的写法,LZ的写法少了几个单引号。
 
后退
顶部