declare @i datetime,@a datetime,@b datetime,@num int set @a='14:50:00' set @b='16:20:00' set @num=datediff(hh,@a,@b) set @i=dateadd(hh,datediff(hh,@a,@b),@a) select case when @i>@b then ltrim(@num-1) +'.'+ltrim(datepart(mi,@a)-datepart(mi,@b)) when @i<@b then ltrim(@num) +'.'+ltrim(datepart(mi,@b)-datepart(mi,@a)) else ltrim(@num) end /* ------------------------- 1.30(1 行受影响)
set @a='14:50:00'
set @b='16:20:00'
set @num=datediff(hh,@a,@b)
set @i=dateadd(hh,datediff(hh,@a,@b),@a)
select
case when @i>@b
then
ltrim(@num-1)
+'.'+ltrim(datepart(mi,@a)-datepart(mi,@b))
when @i<@b then
ltrim(@num)
+'.'+ltrim(datepart(mi,@b)-datepart(mi,@a))
else ltrim(@num) end
/*
-------------------------
1.30(1 行受影响)
可以用sp_help tb来查询。
2.检查你程序定义的类型是否为双精度型,检查一下精度长度是否足够。
set @a='16:15:00'
set @b='16:20:00'
set @num=ltrim(datediff(mi,@a,@b)*1.0/60)
select @num /*
-----------------------------------
0.083333(1 行受影响)我楼上那样算错误,哎
Manhour decimal no 13 20 2 yes (n/a) (n/a) NULL字段描述。。