sql不是有自带的吗??select CONVERT(varchar(10), getDate(),120) --不要时间2002-1-1
select convert(char(8),getdate(),112) ----20020101
select convert(char(8),getdate(),108)  ---06:05:05

解决方案 »

  1.   

    CREATE FUNCTION [dbo].[Convert_Date] (@dt DateTime)  
    RETURNS varchar(100)  AS  
    BEGIN
      Declare @string varchar(100)
      if @dt is null --如果为空返回空格
          set  @string = ' '
      else
          begin
          declare @month varchar(10)
          declare @day varchar(10)       if DatePart(mm,@dt)>=10
                set @month=DateName(mm,@dt)   
           else
                 set @month='0'+DateName(mm,@dt)        if DatePart(dd,@dt)>=10
                 set  @day=DateName(dd,@dt)        
            else
                 set  @day='0'+DateName(dd,@dt)        set @string=DateName(yyyy,@dt)+@month+@day
           End
      return(@string)
    END
    go
      

  2.   

    呵呵,我对SQL函数不是很熟悉,而且不知道convert处理null的情况才想起来自编函数的
    定义VARChar()字符长度后是可以运行正确
    那么为什么省略了长度就出错,是不是默认长度的问题呢?