Kan*_*Gim 4 c# t-sql sql-server datetime
我有一个日期时间值要传递到SqlParameter.
然而当传递到myCmd.Parameters.Add("@TrxDate", adt_TrxDate);
SqlParameter SqlValue & Value 属性是差值
发现执行查询时增加了一天。我在探查器中发现了这个问题,最后发现SqlParameter SqlValue& Value 属性是不同的值。为什么会发生这种情况,有什么想法吗?
根本原因是,.NET DateTime 的精度比 SQL Server 的 DateTime 更高。所以它是四舍五入的。SQL Server 2008开始,DateTime2支持更高的精度。
由于 SQL 中的数据类型为 DateTime,因此 SQL 参数将 .net DateTime 舍入为最接近的 Sql DateTime。由于它是舍入算法,因此可能会添加.003、.007或删除,您可以查看此SO问题以了解更多详细信息。SQL Server 中 DateTime 的不需要的舍入,因此有时,如果添加的微秒加起来,如果它在两天之间的边界上,它实际上可能会更改为下一天。
来自 MSDN,
https://msdn.microsoft.com/en-us/library/system.data.sqldbtype(v=vs.110).aspx
约会时间。日期和时间数据的值范围为 1753 年 1 月 1 日到 9999 年 12 月 31 日,精度为 3.33 毫秒。
DateTime2 日期和时间数据。日期值范围是从公元 1,1 月到公元 9999 年 12 月 31 日。时间值范围为 00:00:00 至 23:59:59.9999999,精度为 100 纳秒。
所以我想如果您将参数类型更改为 DateTime2 它将保留实际时间。但是,除非您的 SQL Server 的列类型为 DateTime2,否则这不会产生任何效果。
| 归档时间: |
|
| 查看次数: |
3026 次 |
| 最近记录: |