神秘数据类型转换为另一种数据类型错误

时间:2012-03-21 20:36:20

标签: c# sql .net type-conversion

我的网络服务器和本地计算机上都有一个完美的网络项目。

我在其他服务器提供商上注册,因为我需要将我的应用程序迁移到更好的位置,当我运行我的应用程序时,我收到此错误消息:

the conversion of a varchar data type to a datetime data type resulted in an out-of-range value

但我没有在本地或其他服务器上收到此错误,所以我认为这将是一些SQL配置,遗憾的是这个错误只发生在代码上,当我在数据库上运行查询时,它工作得很好。所以我真的不知道该怎么做!

我认为它必须是C#.net配置,但我不知道从哪里开始。

由于应用程序正在其他地方工作并且长期存在,我已经放弃了编码问题的可能性。

顺便说一下,只有当代码在行上执行查询时才会出现错误:sqlDa.Fill(dt);

*************************更新********************* *

我设置应用程序文化的web.config文件也与其他服务器相同。此服务器位于另一个国家/地区,因此文化就是问题所在。

我还需要改变服务器文化吗?或者/我怎样才能看到我的sql数据库的文化?

6 个答案:

答案 0 :(得分:2)

  

将varchar数据类型转换为日期时间数据类型

依赖文化。所需要的只是其他服务器在不同的语言环境下运行。

您应该检查您的(C#/ SQL)代码以查看这种情况发生的位置并控制转换 最好的想法是完全消除它。字符串不是Date。

答案 1 :(得分:2)

嗯,伙计们,对于帮助我的人来说很多..

我解决了我的问题,我怀疑有人会遇到与我相同的问题,但无论如何,这就是我要做的事情来修复它:

您需要具有对服务器的完全访问权限,否则您必须在每个查询上使用CONVERT()函数,这将是太多工作。

所以我做的是在sql server上更改我的用户的默认语言,这解决了我的问题100%

Ps:永远不要将DateTime值存储在其他数据类型上。考虑到这一点,你将不会遇到与我相同的问题!

答案 2 :(得分:1)

我怀疑这与服务器的语言环境有关;或SQL机器的语言环境;或者基本上是因为它们不匹配。

答案 3 :(得分:1)

将字符串转换为日期是否受到服务器处于不同语言环境的影响?你不应该把日期存储为字符串,你只是在寻找麻烦。

你是如何在代码中进行转换的?您的日期存储在数据库中的是什么语言环境?您是否在转换为日期时指定要使用的本地?

答案 4 :(得分:1)

错误消息来自数据库,因此您可能正在将数据库值发送到需要转换为日期时间值的数据库。转换失败,因为字符串包含与数据库期望的日期格式不同的日期格式。

您应该使用参数化查询,以便将该值作为日期时间值发送,并让数据库驱动程序担心如何将其发送到数据库。

答案 5 :(得分:0)

正如其他人所指出的,这是一个地区/文化问题。您可能在where子句中传递了一个日期:SELECT ... WHERE RecordDate>=<your date>

将日期传递给数据库时,请始终使用yyyy-MM-dd格式对其进行格式化。无论其设置如何,数据库都将理解它。