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) 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章