计算sugarCRM中两个字段之间的天数

时间:2017-07-13 03:55:49

标签: sugarcrm

如何使用" Formula Builder"计算同一模块的两个日期字段之间的天数,而不计算周末(周六和周日)在sugarCRM工作室。

1 个答案:

答案 0 :(得分:0)

初步评论

据我所知,Sugar Logic没有计算日期跨度的功能。 但是我们可以使用现有的Sugar函数来计算它:

add(1,subtract(daysUntil(addDays($date_end,365000)),daysUntil(addDays($date_start,365000))))

这将返回$ date_start和$ date_end的范围,计算所有天数,包括开始日期和结束日期, 所以跨度2017-01-01到2017-01-01将返回1而不是0。

注意:

  • 这不处理任何字段为空的特殊情况。
  • 如果要直接显示此公式的结果,请将其包装在floor()中以显示为不带.000000的整数

解决方案

由于Sugar Logic也似乎提供任何模数函数和公式范围变量, 你想要的结果公式(只计算Mo-Fr)就像“紧凑”一样:

floor(add(0.5,
  add(
    multiply(floor(divide(add(1,subtract(daysUntil(addDays($date_end,365000)),daysUntil(addDays($date_start,365000)))),7)),5)
  ,
    add(
      min(
        max(0,subtract(6,ifElse(equal(dayofweek($date_start),0),7,dayofweek($date_start))))
      ,
        subtract(
          add(1,subtract(daysUntil(addDays($date_end,365000)),daysUntil(addDays($date_start,365000))))
        ,
          multiply(floor(divide(add(1,subtract(daysUntil(addDays($date_end,365000)),daysUntil(addDays($date_start,365000)))),7)),7)
        )
      )
    ,
      max(
        0,
        subtract(
          subtract(
            add(1,subtract(daysUntil(addDays($date_end,365000)),daysUntil(addDays($date_start,365000))))
          ,
            multiply(floor(divide(add(1,subtract(daysUntil(addDays($date_end,365000)),daysUntil(addDays($date_start,365000)))),7)),7)
          )
        ,
          subtract(8,ifElse(equal(dayofweek($date_start),0),7,dayofweek($date_start)))
        )
      )
    )
  )
))

注意:

  • 以上公式不会处理结束日期之后的开始日期,您可以使用if()isAfter()
  • 来捕获此类情况
  • 假设根本没有考虑,因此仅计算实际工作日