c# - DateTime.FromOADate 与 MSSQL 转换为 DateTime

标签 c# .net sql sql-server datetime

我假设 .NET 中的 DateTime.FromOADate转换为 MS SQL 中的 DateTime 的工作方式相同。

但是,给定:41640
DateTime.FromOADate(值)返回:2014-01-01
CAST(值 AS DATETIME)返回:2014-01-03

这种预期行为是因为不同的开始日期,还是有什么地方不对?

最佳答案

这是 T-SQL 中 2014 年一月的第三天:

SELECT CAST(41640 AS DATETIME)  

这是 .NET 中 2014 年一月的第一天:

DateTime dt = DateTime.FromOADate(41640)

MSDN 中记录了原因:

CAST

“零”日期是 1900-01-01

DateTime.FromOADate

基准日,午夜,1899 年 12 月 30 日

所以 01/01/190012/30/1899 之间有两天的差异。

关于c# - DateTime.FromOADate 与 MSSQL 转换为 DateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18960863/

相关文章:

sql - 如何确保我的SQL代码不会造成困惑

c# - 使用 SQL 时 DBConnection 超时

c# - 组合框选择的操作已更改

c# - 你知道一种取消列表或数组排序的方法吗?

c# - 如何在 Collection<T> 上使用 ToList

c# - 在 Caliburn.Micro 中如何将操作绑定(bind)到嵌套的 ViewModel 方法?

c# - 程序兼容性助手认为我的应用程序是安装程序

c# 如何创建动态列表/数组

.net - 您如何使用 NHibernate 实现 3 层模型?

mysql - 将值从一个中间有空白单元格的表复制到另一个中间没有单元格的表