Convert(Varchar(14), DateTime, 112)

解决方案 »

  1.   

    declare @dt datetime
    set @dt='2005-1-17 10:44:40'--转换
    select convert(char(8),@dt,112),replace(convert(char(8),@dt,108),':','')
    --结果:20050117   104440
      

  2.   

    --写成自定义函数就是
    create function f_convert(@dt datetime,@bz bit)returns varchar(15)
    as
    begin
    if @bz=0  --@bz=0则转换为日期
    return(convert(char(8),@dt,112))
    else if @bz=1  --@bz=0则转换为时间
    return(replace(convert(varchar(8),@dt,108),':',''))
    --@bz=null则转换为日期+时间
    return(convert(char(8),@dt,112)
    +' '
    +replace(convert(varchar(8),@dt,108),':',''))
    end
    go--调用
    select date=dbo.f_convert('2005-1-17 10:44:40',0)
    ,time=dbo.f_convert('2005-1-17 10:44:40',1)
    ,date_time=dbo.f_convert('2005-1-17 10:44:40',null)
    go/*--结果
    date            time            date_time       
    --------------- --------------- --------------- 
    20050117        104440          20050117 104440(所影响的行数为 1 行)
    --*/
      

  3.   

    CREATE  FUNCTION dbo.RetStringTime (@Time DateTime)  
    RETURNS varchar(20) AS  
    BEGIN 
    declare @OutTime varchar(5)
    set @OutTime=replace(convert(char(8),@Time ,108),':','') RETURN(@OutTime)
    END为什么我写成这样返回的时间 是这样的 10472
      

  4.   

    CREATE  FUNCTION dbo.RetStringTime (@Time DateTime)  
    RETURNS varchar(20) AS  
    BEGIN 
    declare @OutTime varchar(6)  --varchar(5)  --这里定义得太小,截断了
    set @OutTime=replace(convert(char(8),@Time ,108),':','') RETURN(@OutTime)
    END