`

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

 
阅读更多

想要造一点随机数据,日期等于ID%30,结果却碰到了:“从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界”的问题:

 

 

select cast('2010-01-'+cast(ID%30 as varchar)+' 15:34:35' as datetime) from table

原因是,有些ID%30等于0导致出现 ‘2010-01-0...’的情况,可以使用下列语句判断:

 

 

select * from (select * from ( select '2010-01-'+cast(ID%30 as varchar)+' 15:34:35' as subdate from table)t
where isDate(subdate)=0

最后,正确的语句应该是:

 

 

update table set STIME=cast('2010-01-'+cast(ID%29+1 as varchar)+' 15:34:35' as datetime)

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics