SqlDbType.DateTime2中的转换是近似的

时间:2016-05-13 14:53:32

标签: c# sql datetime

我正在使用C#,我需要在SQL数据库的一行中添加一个值。值必须是DateTime2类型。所以我必须这样做:

query.Parameters.Add("Expiration", SqlDbType.DateTime2).Value = expiration;因为expiration属于DateTime类型。完成后,我可以毫无问题地执行查询。

但是插入数据库中的值与值expiration并不完全相同。 expiration等于{09:48:47.6721345},数据库中的值为{09:48:47.6720000}。因为转换,所以缺少小数秒。

我该如何处理这个问题?

3 个答案:

答案 0 :(得分:0)

如您指定数据库中的字段为datetime,并且您发送的值为datetime2,因此插入查询将发送datetime2值,但结果将另存为datetime

根据文档datetime的精确度为.123 datetime2具有.1234567

答案 1 :(得分:0)

你提到了

  

到期时间为DateTime

如果是这种情况,则在创建到期对象时会发生截断,然后对象将该截断的值传递给数据库。

顺便提一下,当你提到

  

到期时间等于{09:48:47.6721345}

你是否在调试器中看到了这个值,或者是你试图设置到期的值(如果是后者,DateTime会被截断为{09:48:47.6720000},那么你看到的值在数据库中)。

答案 2 :(得分:0)

我设法解决了我的问题。在SQL datetime中,毫秒值被截断。