insert into dbo.tb_HRMRWJBXXB 
(Rwjbxxid, Alumniid,Xm,XBM,Gjm,Csd,Cssym,Csrq,YJ,FMCZ,XXKXD) 
select NewID(),newId(),zwxm,(case when  Rtrim(xb)='男' then '1' else '2' end),
gji,csd,yxmc, 
cast(year(csrq) as varchar(4))+'-01'+'-01',jygl, 
      smcz,6 from OldAliumData.dbo.JBXXk 

解决方案 »

  1.   

    insert into dbo.tb_HRMRWJBXXB (Rwjbxxid, Alumniid,Xm,XBM,Gjm,Csd,Cssym,Csrq,YJ,FMCZ,XXKXD) 
    select NewID(),newId(),zwxm,(case when  Rtrim(xb)='男' then '1' else '2' end),gji,csd,yxmc, 
    convert(varchar(4),Csrq,120)+'-01'+'-01',jygl, 
          smcz,6 from OldAliumData.dbo.JBXXk--或者
    datepart(yy,Csrq)+'-01'+'-01'
      

  2.   

    我刚看错了。你试试这个
    insert into dbo.tb_HRMRWJBXXB 
    (Rwjbxxid, Alumniid,Xm,XBM,Gjm,Csd,Cssym,Csrq,YJ,FMCZ,XXKXD) 
    select NewID(),newId(),zwxm,(case when  Rtrim(xb)='男' then '1' else '2' end), 
    gji,csd,yxmc, 
    cast((substring(csrq,1,4)+'-01-01')as datetime),jygl, 
          smcz,6 from OldAliumData.dbo.JBXXk 
      

  3.   

     ...select...  convert(varchar(4),csrq,23)+'-01-01',...
      

  4.   

    2楼的SQL还是不行 一样的问题 cast(year(csrq) as varchar(4))+'-01'+'-01' 这句话恐怕有问题 在OldAliumData.dbo.JBXXk 表中是varchar类型的.
      

  5.   


    test code: 
    select cast( (substring(t,1,4)+'-01-01') as datetime)
    from
    (
    select '1999-01-01' as t
    union all
    select '1999' as t
    union all
    select '2000.1' as t
    union all
    select '2000-1-1' as t
    union all
    select '1999.1' as t
    ) A

    test result 
    1999-01-01 00:00:00.000
    1999-01-01 00:00:00.000
    2000-01-01 00:00:00.000
    2000-01-01 00:00:00.000
    1999-01-01 00:00:00.000
      

  6.   


    insert into dbo.tb_HRMRWJBXXB (Rwjbxxid, Alumniid,Xm,XBM,Gjm,Csd,Cssym,Csrq,YJ,FMCZ,XXKXD) 
    select NewID(),newId(),zwxm,(case when  Rtrim(xb)='男' then '1' else '2' end),gji,csd,yxmc, 
    CONVERT(nvarchar(10),csrq,112),jygl,smcz,6 from OldAliumData.dbo.JBXXk
    select CONVERT(nvarchar(10),Getdate(),112)----------------------
    --结果
    20090625
      

  7.   


    select CONVERT(nvarchar(4),Getdate(),112)+'-01-01'
      

  8.   

    insert into dbo.tb_HRMRWJBXXB 
    (Rwjbxxid, Alumniid,Xm,XBM,Gjm,Csd,Cssym,Csrq,YJ,FMCZ,XXKXD) select NewID(),newId(),zwxm,(case when  Rtrim(xb)='男' then '1' else '2' end),gji,csd,yxmc, 
    CONVERT(DATETIME,DATENAME(YY,csrq)+'-01'+'-01')),jygl, smcz,6 from OldAliumData.dbo.JBXXk 
      

  9.   

    还是不行 Conversion failed when converting datetime from character string.
      

  10.   


    能否把你的数据给提供出来,然后将csrq类型也弄出来,看看!
      

  11.   


    insert into dbo.tb_HRMRWJBXXB 
    (Rwjbxxid, Alumniid,Xm,XBM,Gjm,Csd,Cssym,Csrq,YJ,FMCZ,XXKXD) select NewID(),newId(),zwxm,(case when  Rtrim(xb)='男' then '1' else '2' end),gji,csd,yxmc, 
    LEFT(LTRIM(csrq),4)+'-01'+'-01',jygl, smcz,6 from OldAliumData.dbo.JBXXk 你插入另外表时,符合时间的VARCHAR 会转成DATETIME型的,