我的数据表历史记录中时间字段是分开的:
字段定义为:
rec_date:Date
rec_time:Time现在想查询 时间段 在变量 begintime 和 endtime 之间的记录
var
begintime,endtime:Tdatetime;...
如下语句无法通过:with query1 do
begin
 sql.clear;
 sql.add('select * from myrecord.db');
 sql.add('where rec_date+rec_time between :dt1  and :dt2');
 ParamByName('dt1').asDatetime:=begintime;
 ParamByName('dt2').asDatetime:=endtime;
 Open;
end;运行是 提示 'type mismatch in expression' 错误
我知道问题是在 rec_date+rec_time 
date 和 time 字段如何组合出 Tdatetime 类型啊?
请大家帮助!

解决方案 »

  1.   

    這種我沒做過, 那改成這樣可以嗎??
    var
    begintime,endtime:TTime;
    ParamByName('dt1').asTimeime:=begintime;
      

  2.   

    rec_date+rec_time 日期和時間不能相加;類型不匹配;
    你要先將他們轉換成字符串;相加後再轉換回來才行;
    sql.add('select * from myrecord.db');
     sql.add('where convert(datetime,('2003-02-01 ' + '05:02:25' )) between :dt1  and :dt2');
      

  3.   

    sorry
    我剛才又試了一次;發現可以相加的;樓主在數據庫中兩個字斷分別是甚麼類型???????
      

  4.   

    select getdate() + convert(datetime,'02:05:26')結果:
    2004-03-25 15:24:54.203
      

  5.   

    字段类型分别是 DATE 和TIME
      

  6.   

    up同意:
     回复人: 47522341(睡到8:30)(最是她一低头的温柔) ( ) 信誉:112  2004-03-25 13:15:00  得分:0 
     
     
      rec_date+rec_time 日期和時間不能相加;類型不匹配;
    你要先將他們轉換成字符串;相加後再轉換回來才行;
    sql.add('select * from myrecord.db');
     sql.add('where convert(datetime,('2003-02-01 ' + '05:02:25' )) between :dt1  and :dt2');  
     
      

  7.   

    convert(datetime,('2003-02-01 ' + '05:02:25' ))
    这个Convert 那里的?