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] 举报,一经查实,本站将立刻删除。