我用DELPHI操纵ACCESS数据库,
其中一个表(device)中的有一个购置日期字段(buydate),类型是文本型.如"199802"表示日期为1998年2月.用户要求查询某一年以前或以后的数据,应该如何写SQL语句呢?

解决方案 »

  1.   

    SELECT * FROM device WHERE left(buydate,4) Between 1997 AND 1998
      

  2.   

    或者:1998以前:SELECT * FROM device WHERE left(buydate,4)<19981998以后:SELECT * FROM device WHERE left(buydate,4)>1998
      

  3.   

    如果大于等于1999年,则写sql buydate>'199812'
    如果小于等于1999年,则写sql buydate<'199901'
    就行了
      

  4.   

    select * from device where buydate>str_date
    //str_date是那个年份
      

  5.   

    定义一个参数比如@p,当输入参数是执行类似下面语句
    select * from device where buydate>@p 或者是
    ..................................<@p
      

  6.   

    谢谢各位!!原来还有LEFT这个函数哈.select * from device where buydate>str_date
    //str_date是那个年份定义一个参数比如@p,当输入参数是执行类似下面语句
    select * from device where buydate>@p 或者是
    ..................................<@p这两种方法不行,因为buydate是文本类型,如何直接和一个值比校的话,会出现数据类型不匹配的错误.
      

  7.   

    使用TQuery控件query1, 并定义其SQL语句为:
    select * from device where buydate > :pDate
    然后,指定参数pDate的值
    query1.ParamByName('pDate').AsInteger := query2.FieldByName('buydate').AsInteger - 100;
      

  8.   

    SELECT * FROM device WHERE left(buydate,4)>1998 and left(buydate,4)<2000