gpt4 book ai didi

c# - SqlDateTime 如何降低精度

转载 作者:太空狗 更新时间:2023-10-29 22:12:44 26 4
gpt4 key购买 nike

考虑以下程序:

DateTime dateTime = new DateTime(634546165144647370);
SqlDateTime sqlDateTime = new SqlDateTime(dateTime);

Console.WriteLine("dateTime.TimeOfDay = " + dateTime.TimeOfDay);
Console.WriteLine("sqlDateTime.TimeOfDay = " + sqlDateTime.Value.TimeOfDay);
Console.ReadLine();

这将有以下输出:

dateTime.TimeOfDay    = 10:21:54.4647370  
sqlDateTime.TimeOfDay = 10:21:54.4630000

令我感到奇怪的是 .464737 被四舍五入为 .463。这不应该四舍五入到 .464 吗?

我假设我没有在 .NET 代码中发现错误,所以问题是:

为什么它四舍五入到它所做的?以及如何获得客户端舍入来执行 SqlServer 将要执行的操作?

作为旁注,我将这个日期时间保存到 SQL Server 数据库(在 DateTime 列中)并再次将其取出,结果显示为 10:21:54.4670000。所以我真的很困惑。 (我认为 SqlDateTime 会与 SQL Server 将要执行的操作相匹配。)

注意:因为我使用的是 OData,所以我不能在 SQL Server 中使用 DateTime2。

最佳答案

SQL Server DATETIME 的精度为 3.33 毫秒 - 因此,您无法获得所有可能的值,.464 很可能就是这样一个值。

在 SQL Server 2008 上,您可以使用 DATETIME2TIME(x) 数据类型,它们的精度可达 100ns - 对于“常规”使用来说应该足够了

关于c# - SqlDateTime 如何降低精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7824766/

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