Delphi 中的 FloatToStr(Now) 和 SQL Server 中的 Cast(GETDATE() as float) 之间的区别

Posted

技术标签:

【中文标题】Delphi 中的 FloatToStr(Now) 和 SQL Server 中的 Cast(GETDATE() as float) 之间的区别【英文标题】:Difference between FloatToStr(Now) in Delphi and Cast(GETDATE() as float) in SQL Server 【发布时间】:2011-11-26 06:04:11 【问题描述】:

为什么在 Delphi 和 SQL Server 中使用这些命令转换日期会有差异:

SQL 服务器:

SELECT CAST(GETDATE() AS FLOAT)

德尔福:

writeln(floattostr(now));

示例:今天

SQL Server = 40871.431264506 
Delphi     = 40873.4333729861

为什么两个结果不同?

【问题讨论】:

你能展示你得到的不同结果吗?你有一个具体的问题吗?上下文可能会让别人更容易帮助你。 今天:(SQL Server) Select Cast(GetDate() as Float) : 40871.431264506 (Delphi) Writeln(FloatToStr(Now)); : 40873.4333729861 为了便于阅读,我已将示例添加到您的问题中。 SQL Server 从发送到它的任何时间都减少毫秒。 【参考方案1】:

因为许多语言在内部有不同的日期处理方式。它们可能会或可能不会在内部将它们存储为浮点数,并且也可能在不同的“开始”日期开始计数。例如,Delphi 从 1899 年 12 月 30 日开始(TDateTime 为 0)。

另见this link。

【讨论】:

以上是关于Delphi 中的 FloatToStr(Now) 和 SQL Server 中的 Cast(GETDATE() as float) 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

delphi 四舍五入的坑

delphi 四舍五入的坑

Delphi 数据文件常用函数

有关delphi中THandle的问题

请问大家delphi中的除号用啥符号表示?

delphi保留2位小数?如何实现。