CONVERT(datetime, CONVERT(varchar(4), T1.iDate / 10000) + '-' + CONVERT(varchar(4), 
                      T1.iDate / 100 - T1.iDate / 10000 * 100) + '-' + CONVERT(varchar(4), T1.iDate - T1.iDate / 100 * 100))  
这个生成的字符串可能包含有非法的日期,例如2月30号等

解决方案 »

  1.   

    dbo.r_DayGather 这个表是根据每天的系统日期录入进数据库的是没有错误的,我也仔细的检查过了.
      

  2.   

    不是说你数据库的数据可能有错,而是你使用
    CONVERT(varchar(4),T1.iDate / 100 - T1.iDate / 10000 * 100)
    算出来的数据有没有可能是13,那么就会出错。还有一个没看明白,既然这个表每天的系统日期录入进数据库,为什么不设置一个时间字段来进行比较?
      

  3.   

    我这个是自数据库,是从总部COPY来的,原来就是这个样子的.
    CONVERT(varchar(4),T1.iDate / 100 - T1.iDate / 10000 * 100) 
    应该是没有问题的吧,因为T1.iDate / 100 - T1.iDate / 10000 * 100这个我经常用的,用他查询出来的没有13.我也很郁闷了,用cast as试了下就可以了,可是相同的功能语句吗.
      

  4.   

    顶一下搂主,我也遇到同样的问题,我在本地建立一个视图,该视图参照的数据源是远程服务器的n多个表,
    前两天还用的好好的,到今天突然出现个错误,错误信息是:DBTYPE_DBTIMESTAMP 到 datetime转换失败!
    真郁闷,这个错误只因为两个表,若把这两个表去掉,视图正常使用,但只要加上其中一个就不行,很愁人,搞了一天还是没搞出个啥....希望高手赶紧解决吧!