2011-04-25 67 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