首页 > 解决方案 > 2 天的差异:为什么选择 convert(datetime, 43279) = '2018-06-30' 和 DateTime.FromOADate(43279) = '2018-06-28'?

问题描述

我有一些使用 ADO 和其他一些 COM&OLE 技术的遗留 C++ 应用程序。

调试时我发现奇怪的事情:我的程序的某些部分有一个变量 COleDateTime(C++ 类),它存储例如 43279 值,将其显示在屏幕上并保存到 SQL 数据库。

由于在调试模式下我无法将浮点数临时转换为可读的日期时间,因此我使用了 SQL 服务器并发现了奇怪的事情:

select convert(datetime, 43279)产生'2018-06-30'

我用谷歌搜索了一下,发现 .NET 方法

DateTime.FromOADate(43279)产生正确且预期的“ 2018-06-28”

所以,这太不明显了!为什么 OLE 和 SQL 之间存在 2 天的日期时间浮点表示差异?

标签: c++sql.netdatetimeole

解决方案


推荐阅读