我做了一个表,有一个字段'出生年月'为字符型,现在要根据该字段查询:
query1.SQL.add('select * from 基本资料 ');
query1.SQL.Add('where 出生年月>=:出生年月'); //这句话是错误的,我不知怎么写,字符型无法比较大小,但我不知sql中有没有字符转日期的函数
query1.ParamByName('出生年月').asdate:=strtodate(edit11.text);
请问各位大虾这个sql能实现吗?怎么写?可不要告诉我改变表字段的类型哦:(
多谢!

解决方案 »

  1.   

    query1.SQL.add('select * from 基本资料 ');
    query1.SQL.Add('where 出生年月>=:出生年月'); 内部最好不要用中文,尤其是:出生年月
    query1.SQL.add('select * from BaseInfo ');
    query1.SQL.Add('where 出生年月>=:Birthday'); query1.ParamByName('Birthday').asdate:=strtodate(edit11.text);
      

  2.   

    query1.sql.add('select * from 基本资料 where cast(出生日期 as datetime)=:Abb');
    query1.parambyname('Abb').Asdatetime:=strtodate(edit11.text);
      

  3.   

    楼上的老兄,你现在这样的sql好象是错的啊,'出生年月'是字符型,而birthday是date型,这两个怎么比较大小?
      

  4.   

    你不会把数据库中的出生日期该成date型,干吗要用字符型?
      

  5.   

    你在表中的出生日月的数据格式是什么
    如果是:
    DATETIME 无天是对的。
    如果是
    CHAR
    内部最好不要用中文,尤其是:出生年月
    query1.SQL.add('select * from BaseInfo ');
    query1.SQL.Add('where 出生年月>=:Birthday'); query1.ParamByName('Birthday').asSTING:=TRIM(edit11.text);//格式要和你输入 的一样。
      

  6.   

    query1.SQL.add('select * from BaseInfo where 出生年月>='''+'1978-05-01'+'''');
      

  7.   

    query1.SQL.add('select * from BaseInfo where 出生年月>='''+'1978-05-01'+'''');
      

  8.   

    query1.sql.add('select * from baseinfo where 出生年月>='+quotedstr(edit1.text));
      

  9.   

    你是不是用SQL SERVER啊?如果是你把日期用FormatDateTime转换成yyyy-mm-dd hh:nn:ss形式的字符形式,SQL会自动转换的
      

  10.   

    select * from baseinfo where 出生年月>='2004-01-01'
      

  11.   

    可以用函数comparedate,comparedate(date1,date2)=0 ,comparedate(date1,date2)=1,comparedate(date1,date2)=-1
      

  12.   

    sql中字符转日期可以用Convert
    convert(datetime, '2004-4-1', 102)
      

  13.   

    select * from baseinfo where 出生年月>='2004-01-01'  这样就可以啊