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万条,有 没 有好 办法,可以忽略错误,一条转没 问题 展开
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万条,有 没 有好 办法,可以忽略错误,一条转没 问题 展开
5个回答
展开全部
还是先检查数据吧。
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.很明显的提示,csrq(出生日期)是日期型数据,而你却用 csrq=convert () 转换成字符,convert应该转换成日期才对
2.如果怀疑是哪条数据可以用2分法测试到底是哪条数据有错误
2.如果怀疑是哪条数据可以用2分法测试到底是哪条数据有错误
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
加个where 条件
如:where CSRQ like '%[-]%[-]%'
如:where CSRQ like '%[-]%[-]%'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
CONVERT(VARCHAR(8),CSRQ),112)这个就好用了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询