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

来源:互联网 发布:学电商美工 编辑:程序博客网 时间:2024/05/31 13:14

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上不能编译通过。


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



0 0
原创粉丝点击