日期:2014-05-19  浏览次数:20405 次

遇到一个非常奇怪的问题,我试图把问题的描述的清楚些,急寻高手帮忙,语句已经写好了,需要指点一下
select   a.name,ltrim(sum(datediff(minute,StartProcessDate,EndProcessDate))/60)
  + '. '+  
ltrim(sum(datediff(minute,StartProcessDate,EndProcessDate))%60)   as   score  
from   T_Question   b,T_QuestionType   a  
where   a.id=b.qtid   group   by   a.name  
having   sum(datediff(hour,StartProcessDate,EndProcessDate))/60   <> 0

首先把取到的(满足条件的时间区间)相加,得到所有时间的总和(也就是所有的分钟)
接着除以60得到一个整数
在加个点号
在接着对这个时间取余数

打个比方,一共取到122分钟,那么122先/60得到2,在加点号,然后122在取余数%60,得到2,最后格式是2.2,起码 "结果格式 "是正确的

SQL查询结果
        name               sorce
1       BUG问题         114.7
2       领取不到       75.20
3       投诉客服       94.58


---------------------------------
那么问题来了,这个结果应该算是字符串型还是float型???

程序中对取到的结果进行绑定
p.SetValueXY(reader[ "pid "],   reader[ "score "]);
注意reader这里接收的int和string类型,我试了半天也绑定不上


界面结果要显示成小时分钟,而绑定时又要求INT或STRING(这不是我写的函数,是第三方控件,所以我改不了函数参数类型),取到的结果又不知道什么类型,求高手解答.


分少点,狂谢了

------解决方案--------------------
name 字符
score 字符