我用ADOQuery连接access数据库db_station表
字段名称为'历史沿革时间' 字段格式为txt 字段内容 如 195101-195807
现在我想查询当日期为如195203时的记录
怎样实现,分不够可以加 

解决方案 »

  1.   

    数据库定义的一个基本要求是每个原子不可再分。
    因此,你的'历史沿革时间'定义本身就有问题。
    如果是刚刚开发,建议你重新定义表结构,否则,以后遇到的问题可能使你万劫不复!
    如果正在使用,没办法更改字段了。那么:
    你可以先拆分195101-195807,然后正常查找就可以了。
    select * from 
    (select *, subString(历史沿革时间, 1, 6) as 开始时间,
      subString(历史沿革时间, 8, 13) as 结束时间
    from db_station)
    where 结束时间 <= '195203'
      

  2.   

    select * from db_station where 历史沿革时间 like '195203%'   查“-”之前的select * from db_station where 历史沿革时间 like '%195203'   查“-”之后的
      

  3.   


    -- Access中不能用substring,要用mid, 下面的已经过测试adoquery1.sql.text:= 'select * from [db_station] where mid([历史沿革时间],1,6) < ''195301'' and mid([历史沿革时间],8,6) > ''195301''';adoquery1.sql.text:= 'select * from [db_station] where mid([历史沿革时间],1,6) < ''195301'' and mid([历史沿革时间],8,6) > ''195301''';
      

  4.   

    -- Access中不能用substring,要用mid, 下面的已经过测试'select * from [db_station] where mid([历史沿革时间],1,6) < ''195301'' and mid([历史沿革时间],8,6) > ''195301''';--假设有editadoquery1.sql.text:= 'select * from [db_station] where mid([历史沿革时间],1,6) < '''+
                         trim(edit1.text)+''' and mid([历史沿革时间],8,6) > '''+
                         trim(edit1.text)+'''';