将Sum [Field]转换为numeric或float时出错

时间:2014-06-19 18:37:49

标签: sql sql-server-2008 sql-convert

我正在使用一个函数来获取列字段的总数:

ALTER FUNCTION [dbo].[GetTwoWeeklyWorkTime](@EmployeeID as int,@PayPeriodID as varchar(10))

  RETURNS int

  AS
  BEGIN
  DECLARE @StartDate DATETIME
  DECLARE @EndDate DATETIME

   Select @StartDate=[PeriodStartDate],@EndDate=[PeriodEndDate] from PayPeriod where PayPeriodId=@PayPeriodID
-- Declare the return variable here
DECLARE @ResultVar numeric(10,2)

SELECT @ResultVar=

  Sum([WorkingTime])/60

  FROM [DayLog] Where EmployeeId =@EmployeeID AND CreatedDate between @StartDate AND @endDate 

-- Return the result of the function
RETURN Isnull(@ResultVar,0)

END

                 Sum([WorkingTime])/60

我得到的结果为int。 如何转换或将其转换为数字或浮动..?

修改

我试过流动:

             Sum(Cast([WorkingTime] as float))/60

             Sum([WorkingTime])/60.0

但没有成功。

3 个答案:

答案 0 :(得分:2)

好吧,您可以使用

计算它为float
Sum(Cast([WorkingTime] as float))/60

但您还需要将函数返回值更改为float

RETURNS float

答案 1 :(得分:0)

INT / INT会产生INT,即使结果可能只是一小部分。

使用此:

Sum([WorkingTime]) / 60.0

答案 2 :(得分:0)

更改

RETURNS int

  

RETURNS decimal(10,2)