update t_user set ShengRi=
(CASE
WHEN isdate(substring(ZhengJianHM,7,4)+'-'+substring(ZhengJianHM,11,2)+'-'+substring(ZhengJianHM,13,2))=0 THEN null
when datediff(dd,ZhengJianHM,'1900-01-01')>0 then null
when datediff(dd,ZhengJianHM,'2079-06-06')>0 then null
else convert(datetime,substring(ZhengJianHM,7,4)+'-'+substring(ZhengJianHM,11,2)+'-'+substring(ZhengJianHM,13,2),120)
end)
where len(ZhengJianHM)=18
报错,急人呀
15 个解决方案
#1
用ltrim转换下
#2
select cast(substring('420625198801153512',7,8) as datetime)
/*
------------------------------------------------------
1988-01-15 00:00:00.000
(所影响的行数为 1 行)
*/
#3
select cast(substring('420625198801153512',7,8) as datetime)
select convert(datetime,substring('420625198801153512',7,8))
#4
有可能数据是错的,
#5
插入数据的时候怎么不规范一下,
case when isdate(cast(substring(ZhengJianHM,7,8) as datetime))=1 then cast(substring(ZhengJianHM,7,8
else '1900-01-01' end
#6
你不是用ISDATE转换了吗
#7
#8
case when isdate(cast(substring(ZhengJianHM,7,8) as datetime))=1 then cast(substring(ZhengJianHM,7,8
else '1900-01-01' end
关键字 'else' 附近有语法错误。
else '1900-01-01' end
关键字 'else' 附近有语法错误。
#9
select cast(substring('420625198801153512',7,8) as datetime)
select convert(datetime,substring('420625198801153512',7,8))
还是报错
将 expression 转换为数据类型 datetime 时出现算术溢出错误。
select convert(datetime,substring('420625198801153512',7,8))
还是报错
将 expression 转换为数据类型 datetime 时出现算术溢出错误。
#10
查一查有没有数据时错误的
select * from table
where isdate(substring(column,7,8)) = 0
#11
152601195209321532
D20042813190638661
这样的数据都有,没法处理,
着急呀
D20042813190638661
这样的数据都有,没法处理,
着急呀
#12
请高手帮帮忙呀,急死了
#13
先用isdate()把不是日期格式的剔出。。。
#14
或者case when isdate(...) = 1 then convert() else ... end
#15
顶
#1
用ltrim转换下
#2
select cast(substring('420625198801153512',7,8) as datetime)
/*
------------------------------------------------------
1988-01-15 00:00:00.000
(所影响的行数为 1 行)
*/
#3
select cast(substring('420625198801153512',7,8) as datetime)
select convert(datetime,substring('420625198801153512',7,8))
#4
有可能数据是错的,
#5
插入数据的时候怎么不规范一下,
case when isdate(cast(substring(ZhengJianHM,7,8) as datetime))=1 then cast(substring(ZhengJianHM,7,8
else '1900-01-01' end
#6
你不是用ISDATE转换了吗
#7
#8
case when isdate(cast(substring(ZhengJianHM,7,8) as datetime))=1 then cast(substring(ZhengJianHM,7,8
else '1900-01-01' end
关键字 'else' 附近有语法错误。
else '1900-01-01' end
关键字 'else' 附近有语法错误。
#9
select cast(substring('420625198801153512',7,8) as datetime)
select convert(datetime,substring('420625198801153512',7,8))
还是报错
将 expression 转换为数据类型 datetime 时出现算术溢出错误。
select convert(datetime,substring('420625198801153512',7,8))
还是报错
将 expression 转换为数据类型 datetime 时出现算术溢出错误。
#10
查一查有没有数据时错误的
select * from table
where isdate(substring(column,7,8)) = 0
#11
152601195209321532
D20042813190638661
这样的数据都有,没法处理,
着急呀
D20042813190638661
这样的数据都有,没法处理,
着急呀
#12
请高手帮帮忙呀,急死了
#13
先用isdate()把不是日期格式的剔出。。。
#14
或者case when isdate(...) = 1 then convert() else ... end
#15
顶