2011-04-25 48 views
1

我最近複製一個web應用到新安裝的Windows 7和SQL Server 2008 R2。該應用程序使用LINQ to SQL。某處沿線的解析POST日期字符串被搞砸了。當用戶輸入日期字符串,如4/23/2011時,應用程序拒絕它,並引發錯誤The value '04/23/2011' is not valid for Due. Due(實際上是DueDate)是SQL Server中的DateTime字段。配置的日期格式與Windows 7/.NET/SQL服務器

過去,這很好地工作。我以爲這是與機器的操作系統國際化設置的問題,所以我檢查和短期和長期的日期格式分別設置爲MM/dd/yyyydddd, MMMM dd,yyyy,這看起來不錯我。 SQL Server數據庫語言設置爲英語。

此屬性的分部類看起來是這樣的:

[DisplayName("Due")] 
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")] 
public DateTime? DueDate { get; set; } 

必須有另一種日期格式設置我需要調整。我應該在哪裏看?

注:這可能是更正確的一個serverfault問題,但我認爲開發者更容易碰到這個問題不是系統管理員。

更多信息:SP_CONFIGURE 'default language'回報:

default language 0 9999 0 0 

另外:因爲我使用的數據庫登錄的默認語言爲英語。

+0

這是否會被拒絕?通過SQL Server或之前' – gbn 2011-04-25 18:39:12

+0

看起來像以前(由LINQ To SQL我假設)。我可以使用'4/23/2011'直接在原始SQL中進行查詢或更新,並且工作正常。 – RedFilter 2011-04-25 18:46:05

回答

0

我以爲這是與機器的操作系統國際化的問題設置

不,它採用日USERS國際化設置,告訴瀏覽器服務器。

應用程序拒絕它,拋出錯誤值'04/23/2011'對Due不是有效的。

這純粹是不好的編程。如果你真的堅持自己創建你的SQL字符串,你應該總是(!)通過參數或完全獨立的ISO形式輸入日期。這將是2011年4月23日。無論客戶端或服務器上設置的區域設置如何,SQL Server都將接受該格式。

+0

我沒有創建SQL字符串 - 我正在使用MVC的TryUpdateModel。你在這種情況下建議什麼?此外,重新:瀏覽器設置,應用程序使用舊的安裝使用相同的瀏覽器/機器失敗,所以我不知道你在這裏是否正確... – RedFilter 2011-04-25 18:55:24