SQL Server 2012程序错误计算?

时间:2015-03-09 13:49:14

标签: sql sql-server

我正在使用SQL Server 2012,而且我遇到了一个奇怪的问题。

这是我的部分程序

CREATE PROCEDURE [dbo].[abc1]
    @myDate date
AS
BEGIN
    SET NOCOUNT ON;

    declare @avgMonth int;
    set @avgMonth = 12 - month(@myDate) + 1;

    update costtable 
    set balance = 1 / @avgMonth
END

当我输入参数@myDate='2015-1-1'时,@avgmonth应为12,余额应为1/12,但结果为0.而且我尝试过更大的数字或功率函数,仍然出错结果

balance column(18,8)的数据类型。

我该怎么办?

顺便问一下,英语中“1 / x”的术语是什么?

感谢。

1 个答案:

答案 0 :(得分:2)

整数算术是原因。 1/12等于0,因为1和12都是整数

试试这个。

alter  PROCEDURE [dbo].[abc1]
@myDate date
AS
BEGIN
SET NOCOUNT ON;
declare @avgMonth int;
set @avgMonth=12-month(@myDate)+1;
update costtable set balance=1.0/@avgMonth
END

请注意,我用1.0替换了1,因此@avbMoth将被转换