补充:
  query1.Close;
  query1.SQL.Clear;
  query1.SQL.Add('select time1 from table1');
  query1.SQL.Add('where time1>='+' '+str1);
  query1.sql.add('and time1<='+' '+str2);
  query1.Open;
end;

解决方案 »

  1.   

    不能识别填入maskedit1和maskedit2中“分”的类别。
      

  2.   

    这个问题我找了好久才知道解决方法:写成这样:
    query1.Close;
      query1.SQL.Clear;
      query1.SQL.Add('select time1 from table1');
      query1.SQL.Add('where time1>='+#39+str1+#39);
      query1.sql.add('and time1<='+#39+str2+#39);
      query1.Open;
    这样就OK了。
    因为发送的SQL语句中对于日期型的在SQL中要加上单引号(#39)还有,你上面的两行代码有问题:  str1:=datetostr(datetimepicker1.Date)+' '+maskedit1.Text;
      str2:=datetostr(datetimepicker2.Date)+' '+maskedit2.Text;
    应改为:  str1:=datetostr(datetimepicker1.Datetime)+' '+maskedit1.Text;
      str2:=datetostr(datetimepicker2.Datetime)+' '+maskedit2.Text;
      

  3.   

    query1.SQL.Add('where time1>='+' '+str1);
    query1.sql.add('and time1<='+' '+str2);
    改为
    query1.sql.add('where time1 between :date1 and :date2');
    试试看
      

  4.   

    你的代码中最大的问题应该是应用了maskedit1.text,你用单步执行查看一下取回来的是什么值就知道了
      

  5.   

    select * from mytable where datefield>#2002-01-01 10:20:25# and datafield2<#2003-12-30 23:59:59#
    明白你的sql怎么回事了吗?
    日期类型应该加#
      

  6.   

    query1.Close;
      query1.SQL.Clear;
      query1.SQL.Add('select time1 from table1');
      query1.SQL.Add('where time1>=:date1');
      query1.sql.add('and time1<=:date2');
      query1.ParamByName('date1').AsDateTime := date1;
      query1.ParamByName('date2').AsDateTime := date2;
      query1.Open;
      

  7.   

    晚了我还是贴:编写国际化 Transact-SQL 语句--日期、时间问题 我在Sql Server 2000的联机帮助中看到《编写国际化 Transact-SQL 语句》这篇文章,觉得很有用,其中提到数据库中的日期时间问题。下面是我在delphi中的尝试:
    先写一个函数:
    function CreateGlobalTSQLString(ADateTime: TDateTime): string;
    var
      strDestDateTime: string;
    begin
      strDestDateTime := FormatDateTime('yyyy-mm-dd hh:mm:ss.zzz', ADateTime);
      Result := 'CONVERT(DATETIME,''' + strDestDateTime + ''',20)';
    end;然后在生成sql语句时这样写:
    ADODataSet1.CommandText := 'SELECT * FROM 订单 WHERE 订购日期 BETWEEN '+
      CreateGlobalTSQLString(DateTimePicker1.Date) + ' AND ' +
      CreateGlobalTSQLString(DateTimePicker2.Date) + ' ORDER BY 订购日期';这样就不用考虑DateTimePicker的日期格式和库中日期字段的格式的不同了。实际上这样处理就是告诉sql server我给你传进去的日期是什么格式的,剩下的事就是sql server的事了。我只在sql server 2000上测试通过。有兴趣的朋友可以试试其它的数据库。看能否帮到你!