微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQLServer 中 错误 Error converting data type varchar to datetime 的解决方法

sqlServer 中 错误 “Error converting data type varchar to datetime” 可能是最常见的一个错误了, 通常这是由于输入日期字符串varchar 与sql 数据库中的认日期模式Default_DateFormat不一致造成的,多见于非中文版的sqlServer服务器。因为sqlServer针对不同语言的版本,其认日期格式也是“dmy”,"mdy","ymd" 不等。这里d是日期,m是月份, y是年,但是排列顺序并不同。如果输入的日期字符串 与数据库系统的 认日期格式的顺序不同,就会出错。 具体什么语言采用什么格式,大家可以使用 EXEC  SP_HELPLANGUAGE 语句查看。


网上查了一下, 可以使用设置数据库认语言为中文的方式解决问题,但是这个只可以解决Insert插入数据的字符串问题,并不能解决在StoredProcedure存储方法中直接使用日期参数的问题。 而且为了中文日期输入的问题,就要把整个数据库内码设置成中文,也不是很好的解决方法。 并且在存储过程StoredProcedure中调用的日期模式似乎并不取决于系统的认语言,而取决于数据库的版本语言。还好在sqlServer中还提供了设定Login登录名的认语言的方法,这样我们就可以采取在Login账户上设定登录认语言为中文,从而解决格式转换错误的思路。


USE MASTER

EXEC SP_DEFAULTLANGUAGE  '登录名',  'Simplified Chinese' 


方法测试通过。


sqlServer的教程,似乎在sqlServer 2005版以上,也可以直接使用


ALTER LOGIN  登录名  WITH DEFAULT_LANGUAGE = 'Simplified Chinese'


但是此语句在笔者的sql EXPRESS 2008上不能编译通过。


如此, 在用户使用设定的帐号登录后,系统认语言就是设置的语言, 日期格式转换出错的问题也就解决了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐