关于Delphi中RS Float字段只有4位及OADateTime不能显示到秒的解决办法

去年就Google过答案了
今天居然忘了还好当时告诉同事了他还记得。。
大致如下:
Delphi 中对ADO RS (或者ADO本身?)浮点字段有2种存储方式:
TFloatField(能存储全部精度)、TBCDField(转化后只能显示小数点后4位)

通过RS的EnableBCD来控制,该属性默认为True因而默认情况下,浮点字段的ASFloat 返回结果只保留了4位小数。
解决办法:在生成字段前设置该属性即可

例如我们程序中时间是使用OA时间存储的:

rs1:=TADODataSet.Create(Application);
rs1.Connection:
=Datam.cn;
rs1.EnableBCD:
=false;

//SQL查询
Common.ExecSQLQuery(rs1,sSql);

这样 rs1.fieldbyname('fBeginDate').AsFloat 就能得到6位小数(到秒)
但DateTimeToStr( rs1.fieldbyname('fBeginDate').AsFloat  ) 依旧不能正常显示到秒(至于为什么就不清楚了,版本是Delphi6 sp2)
解决办法是:
FormatDateTime('yyyy-mm-dd hh:nn:ss' ,rs1.fieldbyname('fBeginDate').AsFloat)

原文地址:https://www.cnblogs.com/calmzeal/p/1109165.html