我正在尝试将用户的出生日期保存到SQL Server 2008中。
Web服务器配置为en-AU格式,但SQL Server配置为en-US(是的,好东西)。
当我以en-AU格式出生时,例如:
24/12/1981
SQL Server正在抛出异常,因为它不是en-US格式的有效日期。
我如何确保出生日期以en-US格式存储?在某个地方是否存在DateTime.Now的重载?
答案 0 :(得分:3)
DateTime
不会将格式作为值的一部分,而不仅仅是int
。询问出生日期是否以en-US格式存储就像询问int
是以十六进制还是十进制格式存储一样。如果您将格式转换为字符串,则只会看到格式 - 您不应该这样做。
使用参数化SQL并将值设置为参数,而不是构建包含日期格式化版本的SQL语句,并且一切都应该很好。您不应该直接在SQL语句中包含这些值 - 对于数字和日期/时间值,它会给出转换问题,特别是对于文本,它会给出可怕的安全性/转义问题。参数化查询更清晰,将代码与数据分开,并避免不必要的转换。
编辑:我现在看到您正在使用EF,在这种情况下, it 应该为您构建参数化查询。听起来你需要在连接字符串中找到正确的东西,而不是其他任何东西(虽然我很失望,这是一个问题)。它肯定是抱怨的SQL代码,而不是MVC的某些部分?如果您发布堆栈跟踪以及SQL日志,将会有所帮助。