数据表中用到了多个时间量,如数据的输入时间(inputtime), 在数据库中设为了smalldatetime 类型。
程序中每次都获取到当前时间, 然后 存入 数据库中。
程序中要把这个表中的数据显示到dbgrid中,为了让inputtime字段显示成为(2010/2/15)这样的格式,所以adoquery的语句是这样的:select *, convert (varchar(20),declaretime,111 ) from table;然后基于 这次 查询的结果,还会进行 进一步的查询。这样的话,每次查询时的查询语句都需要写的很长,即 :select * from (select *, convert(varchar(20),declaretime,111)from table) 。这里的 通配符 具体会被替换为 好多其他 的字段,然后用到的时间量也还有多个,每个都需要convert 语句,这样的话 查询语句就会写得很长,很麻烦。请问 除了用这种 convert 语句,有没有更容易的 处理 时间的显示的问题的 方法,

解决方案 »

  1.   

    在delphi語句中可用formatdatetime(yyyy/mm/dd,日期)處理...
      

  2.   

    可以在grid的DrawCell事件中处理单元格的显示格式,或者在数据集组件中比如adoquery中双击,添加字段,然后在字段的OnGetText中处理也可
      

  3.   

    依据我的经验:
    1、在数据库的时间段设置成字符串类型,这样你可以使用日期(2011-11-12),也可使用带时间的日期(2011-11-12 AM8:00);
    2、获取日期和时间可通过下面方法
    var DateS:string;
      DateTimetoString(DateS,'yyyy-mm-dd',now);         // 仅日期
      DateTimetoString(DateS,'yyyy-mm-dd hh:nn:ss',now); // 含时间
    3、时期时间转换获取
    var   C:TDateTime;
      C:=StrToDateTime(DateS);
       .....
      

  4.   

      Text:=FormatDateTime('yyyy/mm/dd',Sender.AsDateTime);
      

  5.   

    推荐你用个第三方控件。这的问题。啥代码都不用写。直接连数据库控件自动给你搞成这个样子。
    如DevExpress的控件就很好用。