我有以下公式将持续时间转换为小时。我想做任何持续时间为15分钟或更长的情况被视为一小时。例如,1小时15分钟将被计算为2小时,2小时15分钟将被计算为3小时,依此类推。如果一小时后不到15分钟就会超过一小时。例如1小时5分钟将被认为是1小时。
((案例T0.DurType当'M'然后(T0.Duration / 100)/。60当'D'然后(T0.Duration * 8)Else T0.Duration End))''持续时间'
答案 0 :(得分:1)
case
语法,还是仅仅是您最初选择的方法?Duration
的每个增量代表什么时间单位,1秒,1分钟?假设如下:
case
语法不是必需的Duration
的每个增量为1分钟然后,这是您的正确公式,使用ceiling
而不是case
:
ceiling(T0.Duration/60) as "Duration"
这会将任何部分十进制值增加到下一个最高整数,例如75分钟/ 60 = 1.25小时,天花板将增加到2. 180分钟/ 60 = 3.00小时,天花板将输出3。
修改强> 我不确定你在sql&中实现它是什么意思crystal ...如果你在sql中计算它,它会传递给Crystal,不需要任何进一步的转换。无论哪种方式,这都是两个解决方案:
水晶:假设使用分钟。 “\”运算符是整数除法,因此删除小数。如果剩余分钟数为15或更多,则使用简单的if / then / else iif
来添加1或0:
MINUTES \ 60 + IIF (MINUTES mod 60 >= 15,1 , 0)
在SQL中(MySQL语法,MSSQL / TSQL可能会有所不同)实现如下:
floor(MINUTES / 60) + IF( (MINUTES % 60) >= 15,1 , 0)