保存从en-AU格式转换为en-US格式的日期

本文关键字:格式 en-US 日期 转换 en-AU 保存 | 更新日期: 2023-09-27 18:28:23

我正试图将用户的出生日期保存到SQL Server 2008中。

web服务器配置为en-AU格式,但SQL server配置为en-US格式(是的,不错)。

当我以en AU格式记录出生日期时,例如:

1981年12月24日

SQL Server正在抛出一个异常,因为该日期不是en-US格式的有效日期。

我如何确保出生日期以en-US格式存储?DateTime过载了吗?现在在哪里?

保存从en-AU格式转换为en-US格式的日期

DateTimeint一样,没有格式作为值的一部分。询问出生日期是否以en-US格式存储,就像询问int是以十六进制还是十进制格式存储一样。只有当你将其转换为字符串时,你才能看到一种格式——这是你不应该做的。

使用参数化SQL并将值设置为参数,而不是构建包含日期格式化版本的SQL语句,一切都应该很好。一般来说,您不应该直接在SQL语句中包含这些值——对于数值和日期/时间值,它会带来转换问题,尤其是对于文本,它会产生可怕的安全/转义问题。参数化查询更干净,将代码与数据分离,避免了不必要的转换。

编辑:我现在看到您正在使用EF,在这种情况下应该为您构建参数化查询。这听起来像是你做的需要在连接字符串中正确处理的事情,而不是其他任何事情(尽管我很失望这是一个问题)。抱怨的肯定是SQL代码,而不是MVC的某个部分?如果您将堆栈跟踪与SQL日志一起发布,将会有所帮助。