使用小数的 Varchar 标量函数 returns only int

Varchar scalar function using decimals returns only int

我正在努力解决这个问题。如果我执行这个

SELECT CONVERT(varchar, CONVERT(datetime, 0.55), 108);

我得到“13:12:00”。

但是,将其放入标量函数中

CREATE FUNCTION [dbo].[t_ExcelToTime] (@Excel decimal (12,8))
RETURNS varchar
AS
BEGIN
    DECLARE @Result varchar
    SELECT @Result =  CONVERT(varchar,CONVERT(datetime, @Excel), 108)
    RETURN @Result
END

并将其称为

SELECT [dbo].[t_ExcelToTime](0.55);

returns“1”

我做错了什么?

"returns varchar" 等同于 "returns varchar(1)"。给你的数据类型一个合适的长度。