convert(datetime,cast(日期 as varchar)+''+cast(时间 as varchar),126)

解决方案 »

  1.   

    select left(cast(日期 as varchar),4) + '-' +
           right(cast(日期/100 as varchar),2) + '-' +
           right(cast(日期 as varchar),2) + ' ' +
           cast(时间/100 as varchar) + ':' +
           right(cast(时间 as varchar), 2)
      

  2.   

    select cast(日期+' '+left(时间,2)+':'+right(时间,2) as datetime)
      

  3.   

    select cast(日期+' '+left(时间,2)+':'+right(时间,2) as datetime) as 时间日期字段 from 表
      

  4.   

    select cast(cast(日期 as char(6))+' '+left(cast(时间 as char(4)),2)
    +':'+right(cast(时间 as char(4),2) as datetime) as 时间日期字段 
    from 表
      

  5.   

    liukanghui(刘康辉),yoki(小马哥) , 将数据类型 varchar 转换为 numeric 时出错。 tj_dns(愉快的登山者);转换的不对,例如:20030404 2146  ==〉2003-00-04 21.460000:46
      

  6.   

    select cast(cast(日期 as varchar) +' '+left(csat(时间 as varchar),2)+':'+right(csat(时间 as varchar),2) as datetime)--------------------------------------
    看见了么,
    那支蛾子,
    正飞向太阳,
    那就是我!
    --------------------------------------
      

  7.   

    楼上:  将数据类型 varchar 转换为 numeric 时出错
      

  8.   

    对不起:liukanghui(刘康辉),yoki(小马哥), firetoucher(蹈火者)  提示是:从字符串转换为 datetime 时发生语法错误。
      

  9.   

    刚才写得心急漏了个地方,重写一次:
    select convert(datetime,cast(日期 as varchar)+' '+cast(left(时间,2)+':'+right(时间,2) as varchar))
      

  10.   

    declare @日期 varchar(20),@时间 varchar(20)
    set @日期='20030521'
    set @时间='1200'
    select convert(datetime,cast(@日期 as varchar)+' '+cast(left(@时间,2)+':'+right(@时间,2) as varchar))
    --调试通过
      

  11.   

    各位,大家都忽略了一个问题:right(cast(时间 as char(4),2) as datetime 如果时间是8:10 即810 就会造成时间越界!现在我已经解决了这个问题。谢谢大家的参与!解贴
      

  12.   

    cast(时间 as char(4))当然会,但你用用
    cast(时间 as varchar(4))试试