2010-03-01 154 views
4

我正在使用MS SQL 2000,VS2008,MVC和C#。日期格式和區域設置

我試圖插入並使用存儲過程更新一些數據。 某些列是datetime類型的。 服務器和客戶端的區域設置設置爲荷蘭語(比利時) 這意味着默認日期格式爲dd/mm/yyyy。

當我嘗試插入或更新與例如日期。 28/03/2009,我收到以下錯誤:

插入: 錯誤的數據類型爲nvarchar轉換爲datetime

更新: 一個char數據類型到datetime數據類型的轉換導致的失-range datetime value

當我嘗試使用01/03/2009這樣的日期時,我沒有收到任何錯誤,但日期保存爲美國日期格式的03/01/2009。 這是區域設置問題的典型行爲。但兩者都被設定爲荷蘭(比利時)。

它爲什麼以美國格式保存日期?
我在這裏錯過了什麼?

謝謝!
Stijn

回答

3

您應該使用DateTime對象而不是字符串將數據插入到數據庫中。您的客戶端代碼應該使用客戶端的區域設置將客戶端的日期條目轉換爲DateTime對象,然後將DateTime結構添加到最終發送到數據庫中的參數中。

+0

感謝大衛做的伎倆! – 2010-03-01 13:34:41

1

SQL實例都有它自己的區域設置,默認爲「美國英語」

現在,這個,如果你使用推VARCHAR而非本地日期時間來存儲數據值通常發生。如果您的代碼/表使用日期時間列,並且將參數定義爲日期時間,那麼您將不會收到錯誤。

1

我有這個問題太,它是與你的SQL服務器的日期格式,

我解決它通過格式化的日期要插入的字符串,像這樣

DateTime.Now.ToString("MM/dd/yyyy HH:mm") 

希望幫助

1

所有上述建議是正確的,但我覺得,如果你/添加日期時間爲一個字符串VARCHAR最安全的方法是在格式「YYYY-MM-DD」

例如。

Update MyTable 
    Set MyDate = '2010-03-01' 
相關問題