我用query.sql.add(sysdate减去数据库里的一个时间型字段)
我想把减出来的时间显示到dbgrid中!!
但减出来的不是日期型的。我怎么办啊?
(我要的时间是年月日时分秒的形式)

解决方案 »

  1.   

    在字段的OnGetText事件中转换一下
      

  2.   

    肯定不是拉,最多就是时间,你要用decode和encode 来分别得出时间
      

  3.   

    时间其实是double类型的,只需要用tdatetime(结果),就可以得到你要得结果
      

  4.   

    你们没有理解我的意思!!!我是在query中啊?
      

  5.   

    alphax(多喝了三五杯) 那个OnGetText怎么写啊?
    我不会。谢谢大个了
      

  6.   

    比方你的字段名叫f1,在Delphi设计器中,名称为Query1F1,那么为它编写一个事件处理,procedure TForm1.Query1F1GetText(Sender: TField;
      var Text: String; DisplayText: Boolean);
    begin
      if not Sender.IsNull then 
      begin
        if DisplayText then Text := FormatDateTime('yyyy-mm-dd hh:mm:ss', Sender.AsDateTime)
        else Text := Sender.AsString;
      end
      else Text := '';
    end;它就会帮你转换显示了
      

  7.   

    我跟你说说原理吧,也许你好懂一点,你的数据库或者BDE对于你的那个时间相减的表达式返回浮点类型的数据,这些数据如果直接显示就会看到小数,而不是日期,所以你需要转换一下它们的表现形式,一般的数据库控件在显示数据的时候都会调用字段对象的Text属性,如果我们提供了
    OnGetText事件,那么Text属性会间接调用OnGetText来产生某个字段的显示形式,
    所以我们在OnGetText事件中转换一下,就可以达到我们的目的
      

  8.   

    你接触Delphi多久了?要回答你这个问题我觉得有点麻烦,我觉得我没有误解你的意思,但是我又不敢肯定,如果我没有理解错你的意思,那么一定是你不太熟悉Delphi的原因,所以我把原码
    写出来了,也仍然没有搞定,如果我误解了你的意思,我说多了也没用呵,不要介意