簡體   English   中英

SqlDbType.DateTime2中的轉換是近似的

[英]Conversion in SqlDbType.DateTime2 is approximative

我正在使用C#,需要在SQL數據庫的一行中添加一個值。 該值必須為DateTime2類型。 所以我必須那樣做:

query.Parameters.Add("Expiration", SqlDbType.DateTime2).Value = expiration; 因為expiration類型為DateTime 完成后,我可以毫無問題地執行查詢。

但是插入數據庫中的值與值expiration並不完全相同。 expiration等於{09:48:47.6721345} ,數據庫中的值為{09:48:47.6720000} 因此,由於進行了轉換,因此缺少了幾分之一秒。

我該如何解決這個問題?

如您所指定,數據庫中的字段為datetime ,而您要發送的值為datetime2因此插入查詢將發送一個datetime2值,但結果將另存為datetime

根據文檔datetime具有.123的精度,其中datetime2具有.1234567

你提到過

到期類型為DateTime

如果是這種情況,則在創建過期對象時就會發生截斷,然后將其傳遞給數據庫。

順便說一句,當你提到

到期時間等於{09:48:47.6721345}

您是否在調試器中看到了該值,或者是您要設置到期時間的值(如果是后者,則DateTime會被截斷為{09:48:47.6720000},因此您在數據庫中看到的值)。

我設法解決了我的問題。 在SQL中,日期時間毫秒值將被截斷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM