gpt4 book ai didi

c# - 从 DateTime 转换为 SqlDateTime 不准确

转载 作者:太空狗 更新时间:2023-10-29 18:23:06 25 4
gpt4 key购买 nike

我有一个从源(DataRowSqlDataReader)获取日期属性的方法:

protected SqlDateTime GetSqlDateTimePropertyValue(string propertyName, object source)
{
var objValue = GetPropertyValue(propertyName, source);
var value = objValue == DBNull.Value ? null : (DateTime?)objValue;
var sqlValue = new SqlDateTime();
if (value.HasValue) sqlValue = value.Value;
return sqlValue;
}

但是转换似乎稍微改变了日期,所以我的测试总是失败。

有谁知道为什么这个方法会转换错误?

在该方法的末尾,似乎对 SqlDateTime 的转换做了一些舍入:

value.Value.Ticks:        634698391707468296
sqlValue.Value.Ticks: 634698391707470000

最佳答案

是 - SQL Server DATETIME 的精度为 3.33 毫秒 - 但是 .NET 数据类型可以表示单毫秒。

因此,您有时会遇到一些舍入问题。

在此处阅读更多关于 DATETIME 数据类型及其属性和怪癖的信息:

Demystifying the SQL Server DATETIME datatype

此外,SQL Server 2008 引入了大量新的与日期相关的数据类型 - 在此处阅读更多相关信息:

SQL Server 2008 New DATETIME datatypes

这些类型确实包括一个 DATETIME2 数据类型,它精确到 100ns。

关于c# - 从 DateTime 转换为 SqlDateTime 不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10117570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com