sql忽略错误

usematchgoupdatecTRY_IDsetCSRQ=CONVERT(VARCHAR(8),CONVERT(DATETIME,CSRQ),112)转换格式就是把1... use match
go
update cTRY_ID set CSRQ=CONVERT(VARCHAR(8),CONVERT(DATETIME,CSRQ),112)

转换格式就是把1980-1-1,1980-10-1,1980-1-10转成19800101,19801001,19800110.

出现问题提示:

服务器: 消息 242,级别 16,状态 3,行 1
从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。
语句已终止。

分析原因可能是源数据csrq(出生日期)格式有 问题,但一直找不 出错原因在 那条,导致无法一次转换,因为有40万条,有 没 有好 办法,可以忽略错误,一条转没 问题
展开
 我来答
带我信乐
2009-10-27 · TA获得超过1353个赞
知道小有建树答主
回答量:680
采纳率:0%
帮助的人:717万
展开全部
首先
SELECT CONVERT(DATETIME,CSRQ) FROM 表
有错吗,有错就说明CSRQ具有不规范字符型日期
然后检查是否有空或NULL值
从你的错误说是datetime 值越界
检查字符型日期是否具有小于1753年获大于9999年的
SELECT REPLACE(SUBSTRING('1753-01-01',1,5),'-','')

update 属于隐式事务 MS也没办法忽略把
最好找出错误数据,防止程序中出错
传说中的鹰王
2009-10-27 · TA获得超过1053个赞
知道小有建树答主
回答量:923
采纳率:87%
帮助的人:549万
展开全部
还是先检查数据吧。
select * from cTRY_ID
where
year not between 1753 and 9999 or
monty not between 1 and 12 or
day not between 1 and 31

把这些垃圾数据先处理掉,再update
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dyxg041
2009-10-27 · TA获得超过1035个赞
知道小有建树答主
回答量:1067
采纳率:0%
帮助的人:965万
展开全部
1.很明显的提示,csrq(出生日期)是日期型数据,而你却用 csrq=convert () 转换成字符,convert应该转换成日期才对
2.如果怀疑是哪条数据可以用2分法测试到底是哪条数据有错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
石亮东
2009-10-27 · TA获得超过1217个赞
知道小有建树答主
回答量:2022
采纳率:66%
帮助的人:1410万
展开全部
加个where 条件
如:where CSRQ like '%[-]%[-]%'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
英雄少女林小壮
2009-10-27 · TA获得超过117个赞
知道小有建树答主
回答量:165
采纳率:0%
帮助的人:90.1万
展开全部
CONVERT(VARCHAR(8),CSRQ),112)这个就好用了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式