我正在使用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”的术语是什么?
感谢。
答案 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将被转换