计算小时数的案例陈述

时间:2013-12-19 16:37:26

标签: sql crystal-reports

我有以下公式将持续时间转换为小时。我想做任何持续时间为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))''持续时间'

1 个答案:

答案 0 :(得分:1)

  1. 您是在SQL中执行此操作还是在Crystal中执行公式字段?
  2. 出于某种原因需要case语法,还是仅仅是您最初选择的方法?
  3. Duration的每个增量代表什么时间单位,1秒,1分钟?
  4. 假设如下:

    • 这是在sql
    • 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)