2011-05-12 71 views
0

上午將默認日期(開始日期&結束日期)傳遞給sp('1/1/1753 12:00:00 AM'& '12/31/9999 12:00:00 AM')。獲取SqlDateTime溢出。 2008年例外

2005年工作正常,但在2008年出現「SqlDateTime溢出,必須在1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之間」異常。

而扭曲是這樣的,當我從管理工作室運行SP工作正常,但通過網站上的現場服務器,它會給出錯誤。

在此先感謝

+0

你如何從代碼中調用sp? – Arthur 2011-05-12 12:00:58

回答

2

這很可能是與在其中安裝操作系統的語言環境或鏈接到代碼運行時所使用的用戶帳戶的語言環境的問題,因爲不同的語言環境解釋格式的約會,你正在提供的無論是DD/MM/YYYYMM/DD/YYYY

,最好的辦法來解決這個問題是使用一個規範的日期格式 - 無論是YYYY-MM-DDTHH:MM:SS AM/PMYYYYMMDD HH:MM:SS AM/PMYYYY-MM-DD HH:MM:SS(24h)

+0

如果語言是英國語言,則顯示的虛線日期格式不安全。它將與日期和時間(而不是空間) – 2011-05-12 12:12:22

+1

@Damien - 更正 - 我混合了ODBC規範和ISO8601 – 2011-05-12 12:17:43

+0

具有更改日期格式的活動服務器操作系統上的MM/DD/YYYY仍然有相同的錯誤 – shoab 2011-05-16 12:39:41

3

我與埃德哈珀同意概率lem很可能是不同環境之間的語言環境或語言設置差異。我不同意他的解決方法。

儘快將這些日期時間值轉換爲日期時間變量,並且不要將它們視爲字符串。即在網站上這樣做,然後依靠ADO.Net將日期時間值正確編組到SQL Server。更新存儲過程以期望參數爲日期時間 - 基本上,不要在處理中儘早將它們視爲字符串。