我正在使用C#,我需要在SQL数据库的一行中添加一个值。值必须是DateTime2
类型。所以我必须这样做:
query.Parameters.Add("Expiration", SqlDbType.DateTime2).Value = expiration;
因为expiration
属于DateTime
类型。完成后,我可以毫无问题地执行查询。
但是插入数据库中的值与值expiration
并不完全相同。 expiration
等于{09:48:47.6721345}
,数据库中的值为{09:48:47.6720000}
。因为转换,所以缺少小数秒。
我该如何处理这个问题?
答案 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中,毫秒值被截断。