我的网络服务器和本地计算机上都有一个完美的网络项目。
我在其他服务器提供商上注册,因为我需要将我的应用程序迁移到更好的位置,当我运行我的应用程序时,我收到此错误消息:
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数据库的文化?
答案 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格式对其进行格式化。无论其设置如何,数据库都将理解它。