【】写了一个时间转换函数有异常求改之

【求助】写了一个时间转换函数有错误求改之
函数内容:
CREATE   FUNCTION   comm_GetDatime(
@ReportYear   varchar(4),
@ReportMonth   varchar(2),
@ReportDay   varchar(2)
)
RETURNS   VARCHAR(15)
AS
BEGIN
DECLARE   @Datetime   Varchar(15)

SET   @Datetime=@ReportYear   +   '- '   +   @ReportMonth   +   '- '   +   @ReportDay

RETURN   @Datetime
END
函数功能:根据传进来的三个参数:年,月,日()均为整型变量,经过处理后返回一个日期型输出。
如:输入变量:2007     8     3
输出形式:2007-08-03   或   2007-8-3   均可
在线等着送分!


------解决方案--------------------

--函数名要加dbo.
CREATE FUNCTION dbo.comm_GetDatime(
@ReportYear varchar(4),
@ReportMonth varchar(2),
@ReportDay varchar(2)
)
RETURNS VARCHAR(15)
AS
BEGIN
DECLARE @Datetime Varchar(15)

SET @Datetime=@ReportYear + '- ' + @ReportMonth + '- ' + @ReportDay

RETURN @Datetime
END
go


--调用时,也要加dbo.
select dbo.comm_GetDatime(2007,8,3)

------解决方案--------------------
2007-08-03格式:


SET @Datetime = @ReportYear + '- ' + replicate(0, 2 - len(@ReportMonth)) + @ReportMonth + '- ' + + replicate(0, 2 - len(@ReportDay)) + @ReportDay
------解决方案--------------------
--創建函數
CREATE FUNCTION dbo.comm_GetDatime(
@ReportYear varchar(4),
@ReportMonth varchar(2),
@ReportDay varchar(2)
)
RETURNS VARCHAR(15)
AS
BEGIN
DECLARE @Datetime Varchar(15)

SET @Datetime=@ReportYear + '- ' + Right(100 + @ReportMonth, 2) + '- ' + Right(100 + @ReportDay, 2)

RETURN @Datetime
END
GO
--調用
Select dbo.comm_GetDatime( '2007 ', '8 ', '3 ')
Select dbo.comm_GetDatime( '2007 ', '08 ', '3 ')
--結果
/*
2007-08-03
*/