gpt4 book ai didi

sql-server - 为什么这个函数不返回小数?

转载 作者:行者123 更新时间:2023-12-02 22:04:17 24 4
gpt4 key购买 nike

我希望此函数采用日期时间并返回以小数表示的时间。例如。 - 2:33 PM 将返回为 14.55

ALTER FUNCTION [dbo].[GetTimeAsDecimal](
@DateTime as datetime
) RETURNS decimal
AS
BEGIN
DECLARE @hour decimal
DECLARE @min decimal
DECLARE @result decimal
SELECT @hour = DATEPART(HOUR, @DateTime)
SELECT @min = (DATEPART(MINUTE, @DateTime)/60.0)
SELECT @result = @hour + @min
RETURN @result
END

类似的查询会产生预期的结果...

SELECT DATEPART(HOUR, getDate()) + (DATEPART(MINUTE, getDate())/60.0)

最佳答案

确实返回一个小数 - 但由于您没有指定精度和小数位数,因此它默认的小数位数(小数点后的位数)为0......所以你得到一个小数点后没有任何数字的小数......(所以它会被四舍五入,并且可能看起来不是真正的小数 - 它是)。

您需要将十进制的所有定义更改为确实包含小数位数的内容!类似decimal(18,4)之类的东西。

decimal(18,4) 的定义意味着:

  • 共18位
  • 其中小数点后 4 位(因此小数点前 14 位)

默认值 - 如果您没有指定任何其他内容 - 为 decimal = Decimal(18,0)

关于sql-server - 为什么这个函数不返回小数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3224544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com