sql数据表中有个字段 hy_birthday是varchar类型。里面存放的数据一般三种格式:空值,yyyy-mm-dd,mm-dd
那么我如何查询当天生日会员、本周生日会员、本月生日会员和还有15天过生日的会员?

解决方案 »

  1.   

    StrToDateTime
    TryStrToDate 
    这两函数就可以了
      

  2.   

    to sololie:
    我用StrToDateTime,结果不正确。麻烦给你写个语句,我想了一天了,没想出来。
      

  3.   

    不知你用的啥数据库,如果是sqlsever的话
    假设你的表有出身日期字段,格式为yyyy-mm-dd// 查询所有7天后过生日的人
     SELECT * FROM 表名 WHERE DATEDIFF(DAY,  GETDATE(),
      (SELECT REPLACE((SELECT CONVERT(CHAR(10), 表名.出生日期, 120)), 
              (SELECT CONVERT(CHAR(4), 表名.出生日期, 120)),
              (SELECT YEAR(GETDATE()))))) = 7  
      

  4.   

    0即当天,如果是 -7即生日过了7天另外delphi中转换日期字符串可以
    FormatDateTime('YYYY-MM-DD', Now); // 2013-05-28
    FormatDateTime('MM-DD', Now); // 05-28
      

  5.   

    to 码农何苦为难码农:
    1.CONVERT昨天就使用了,因为sql表中的字段类型是varchar,在从字符串向日期转换过程中提示失败。
    2. ADOQuery1.SQL.Add('select * from hy_info where '+ formatdatetime('mm',StrToDateTime(hy_birthday)))..... 这样不行的,StrToDateTime后面只能是变量,不能是字段的名称。
    还有其他办法吗?
      

  6.   

    select * from hy_info where datediff(month,CONVERT(CHAR(10), hy_info.hy_birthday, 120),getdate())=0 
    这样也提示转换失败
      

  7.   

    还是自己解决了,sql截取字符串进行比较