类似这样的时间类型 20:44:33全部显示为 12 30 18,好郁闷。我都用8字节代替,原先datetime(8)现在为varchar(8)
好像之前可以这样的!!!

解决方案 »

  1.   

    不要直接改
    用convert(varchar(10),col,120)
      

  2.   

    --日期转换参数,值得收藏
    select CONVERT(varchar, getdate(), 120 )
    2004-09-12 11:06:08select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')
    20040912110608select CONVERT(varchar(12) , getdate(), 111 )
    2004/09/12select CONVERT(varchar(12) , getdate(), 112 )
    20040912select CONVERT(varchar(12) , getdate(), 102 )
    2004.09.12其它我不常用的日期格式转换方法:select CONVERT(varchar(12) , getdate(), 101 )
    09/12/2004select CONVERT(varchar(12) , getdate(), 103 )
    12/09/2004select CONVERT(varchar(12) , getdate(), 104 )
    12.09.2004select CONVERT(varchar(12) , getdate(), 105 )
    12-09-2004select CONVERT(varchar(12) , getdate(), 106 )
    12 09 2004select CONVERT(varchar(12) , getdate(), 107 )
    09 12, 2004select CONVERT(varchar(12) , getdate(), 108 )
    11:06:08select CONVERT(varchar(12) , getdate(), 109 )
    09 12 2004 1select CONVERT(varchar(12) , getdate(), 110 )
    09-12-2004select CONVERT(varchar(12) , getdate(), 113 )
    12 09 2004 1select CONVERT(varchar(12) , getdate(), 114 )
    11:06:08.177
      

  3.   

    declare @time datetime 
    set @time='20:44:33'select convert(varchar(8),@time,108)/*--------
    20:44:33(1 行受影响)
    */
      

  4.   

    这是因为你的DATETIME类型的数据值为:18XX-12-30 20:44:33
    当数据类型变成:VARCHAR(50)时,变成:12 30 18XX  8:44PM
    由于变成了VARCHAR(8),于是只截取前8位:12 30 18