在delphi中用
select * from table where month(field)=:byyuefen;
parambyname('byyuefen').asinteger:=strtoint(edit1.text);
报错
但是
select * from table where month(field)=8  在sqlserver2000中通过
请问delphi中应该如何正确书写?

解决方案 »

  1.   

    把SQL语句改为:
    select * from [table] where month([field])=:byyuefen;
      

  2.   

    因为 table 、 Field 可能是SQL Server的关键字。
      

  3.   

    如果单月份是一个字段肯定没问题的
    你用的DATETIME类型吧?
    那可以这么写 select * from tablename where datepart(mm,字段名)=关键字
      

  4.   

    to pilicat 我是用table和field来代表了表和字段,(因为原sql很长)。你说的问题不存在
    可以建个表来运行一下,就明白我说的意思了。
      

  5.   

    select * from table where month(field)=:byyuefen;
    parambyname('byyuefen').asinteger:=strtoint(trim(edit1.text));
      

  6.   

    select * from table where month(field)=strtoint(trim(edit1.text))
      

  7.   

    sql.add('select * from table where month(field)=strtoint(trim(edit1.text))');
      

  8.   

    procedure TForm1.Button1Click(Sender: TObject);
    测试通过
    begin
      with adoquery1 do
      begin
        close;
        sql.clear;
        sql.add('select * from t where month(c) = 8');
        open;
        showmessage(datetimetostr(fields[2].asdatetime));
      end;
    end;
    仔细检查代码吧可能哪出错
      

  9.   

    SELECT *
    FROM employee
    WHERE (MONTH(dism_date) = 10) AND (YEAR(dism_date) = 2003)自己举一反三吧,语句没有问题