Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 保存日期从en AU格式转换为en US格式_C#_.net_Sql Server - Fatal编程技术网

C# 保存日期从en AU格式转换为en US格式

C# 保存日期从en AU格式转换为en US格式,c#,.net,sql-server,C#,.net,Sql Server,我正在尝试将用户的出生日期保存到SQL Server 2008中 web服务器配置为en-AU格式,但SQL server配置为en-US(是的,很好) 当我以en-AU格式记录出生日期时,例如: 1981年12月24日 SQL Server正在引发异常,因为该日期不是en US格式的有效日期 我如何确保出生日期以en-US格式存储?DateTime是否有过载。现在某个地方?DateTime没有格式作为值的一部分,就像int一样。询问出生日期是否以en-US格式存储就像询问int是否以十六进制或

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

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

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

1981年12月24日

SQL Server正在引发异常,因为该日期不是en US格式的有效日期


我如何确保出生日期以en-US格式存储?DateTime是否有过载。现在某个地方?

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

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


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

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

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


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

你用来转换和保存日期的C代码是什么?我用的是MVC,所以它只是来自设置为DateTime的模型。你用来转换和保存日期的C代码是什么?我用的是MVC,所以它只是来自设置为DateTime的模型。它正在构建参数化查询,但它试图插入的日期仍然是1981年12月24日(这不是一个有效的美国日期)。@Paul:但它根本不应该尝试将日期作为字符串插入。我认为根本不需要字符串转换——驱动程序应该能够以二进制格式传递它。嗯,很有趣。SQL Server中的数据类型为DateTime,模型数据类型为DateTime。我在从DateTime转换为时出错DateTime2@Paul:你确定一切都是同步的吗?最近有变化吗?如果有一部分认为某个字段是DateTime,而实际上是DateTime2,那么这可能会把事情搞砸…@Paul-当您构建查询时,sqlparameter.sqldbtype是什么?它正在构建参数化查询,但它试图插入日期仍然是1981年12月24日(这不是有效的美国日期)@Paul:但它根本不应该试图将日期作为字符串插入。我认为根本不需要字符串转换——驱动程序应该能够以二进制格式传递它。嗯,很有趣。SQL Server中的数据类型为DateTime,模型数据类型为DateTime。我在从DateTime转换为时出错DateTime2@Paul:你确定一切都是同步的吗?最近有变化吗?如果有一部分认为字段是DateTime,而实际上是DateTime2,那么这可能会把事情搞砸…@Paul-当您构建查询时,sqlparameter.sqldbtype是什么?