要開始,我得到的錯誤如下:鑄造SQL Date值沒有
varchar數據類型爲datetime數據類型的轉換導致的出範圍值。
我所做返回一組從SQL數據庫中的數據到一個DataTable,從那裏我運行在C#代碼方面的if
聲明,以確定一個日期是大於其他。這對很多部署都有效,但是新服務器上的特定部署會導致上述錯誤。
這裏是我的代碼:
if
(
Convert.ToDateTime(ds.Tables[0].Rows[0]["StartDate"].ToString()).Date >
Convert.ToDateTime(ds.Tables[0].Rows[0]["OriginalStartDate"].ToString()).Date
)
{
... do stuff ...
}
我的理解是,該列中的數據,轉換爲字符串,失敗嘗試執行Convert.ToDateTime()
然而,令人困惑的問題是,這個時候代碼已在其他服務器上運行,並且此問題是孤立的。所以我得到它可能是唯一的服務器,但我不知道在哪裏看。
更改任何區域設置等,不幸的是不是一個選項,所以我試圖找到解決辦法!
任何幫助表示讚賞!
什麼是數據庫中的日期格式?日期可能以一種格式記錄,而您的轉換正在另一種格式中運行。 – MPelletier
數據庫中的*類型*是什麼?它應該是一個DateTime,這意味着你不應該轉換爲一個字符串,並根本不需要。只需使用'if((DateTime)ds.Tables [0] .Rows [0] [「StartDate」]>(DateTime)ds.Tables [0] .Rows [0] [「OriginalStartDate」]))' –
雙重檢查'type'這兩個字段的類型都是DateTime。 @JonSkeet我會相應地嘗試你的建議。至於格式,它看起來像'2015-07-01 00:00:00.000' @MPelletier –