如何使用sugarCRM studio中的“公式生成器”计算同一模块的两个日期字段之间的天数,而不计算周末(周六和周日)。
初步评论
据我所知,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。
备注:
.000000
解决方案
由于 Sugar Logic 也不似乎提供了任何 modulo 函数和公式作用域变量, 您想要的结果公式(仅计算 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()
abs(subtract(daysUntil($datefieldA),daysUntil($datefieldB)))