您的位置:首页 > 其它

从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。

2012-05-26 13:35 477 查看
报错信息:

从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。

得到一些线索 SET DATEFORMAT,

查sql 帮助,其作用是:设置用于输入 datetime 或 smalldatetime 数据的日期部分(月/日/年)的顺序。

有效参数包括 mdy、dmy、ymd、ydm、myd 和 dym。

问题原因就是处在这里。

网上原有的解决方案是 加上 SET DATEFORMAT ymd

但是sql文档上已经说明SET DATEFORMAT 只能影响当前会话的转换。

如果逐一进行修改势必会十分的麻烦。

如果换一种思路的话

首先我们先

执行sp_helplanguage 相当于select * from master..syslanguages

执行结果部分如下

23 dmy
0 British
British English

24 dmy
0 eesti
Estonian

27 dmy
0 Português (Brasil)
Brazilian

28 ymd
0 繁體中文
Traditional Chinese

30 ymd
0 简体中文
Simplified Chinese

显然不同语言有着自己习惯的日期格式。我们只要修改我们的语言设置我们就可以修改所有的日期格式设置了。

SET LANGUAGE 会联动SET DATEFORMAT 。只要我能 SET LANGUAGE 成正确的语言,那么我的字符串日期就能正确处理。

操作方法:

打开企业管理器-->你注册的SQL server-->安全性 -->登录,双击你所用的登录用户,弹出 sql server 登录属性,修改默认设置 中的语言。

备注:

语言= English, 其DATEFORMAT 为 mdy, 但是它也能正确转换格式为“yyyy-mm-dd hh:mm:ss” 的字符串日期。

关键字:

SQL Server ,2147217913 ,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐