公式运算符及函数
在构建公式时使用这些运算符和函数。除非另行指定,否则所有的函数都可用在任何能够包含公式(例如,公式字段、验证规则、批准过程和工作流规则)的位置。
函数
函数即系统定义的公式,可能需要您的输入值,并返回一个或几个值。例如,TODAY() 不需要输入值,但会返回当前日期。TEXT(value) 函数需要您输入百分比、数字或货币并返回文本。
运算符
一个符号,指 定要执行的计算类型或其执行顺序。例如,“+”号指定两个值应相加。左括号和右括号指定想要先计算的表达式。
数学运算符
+ 加
计算两个值的和。
使用: 值 1 + 值 2,并用合并字段、表达式或其他数值替换每个值。
返回值: 数值
Amount + Maint_Amount__c + Services_Amount__c
此公式计算产品 Amount(金额)、维护金额与服务费的总和。请注意,Maint amount(维护金额)和 Service Fees(服务费)是自定义金额字段。
Monday_Hours__c + Tuesday_Hours__c + Wednesday_Hours__c + Thursday_Hours__c + Friday_Hours__c > 40
使用如上验证规则中的公式,可以在为各个工作日输入的工作时间总和大于 40 时显示下面的错误消息:“总工作时间不能超过 40 个小时”。本示例要求自定义对象上有五个自定义字段,每个工作日一个。
- 减
计算两个值的差。
使用: 值 1 - 值 2,并合并字段、表达式或其他数值替换每个值。
返回值: 数值
Amount - Discount_Amount__c
此公式计算产品 Amount(金额)减去 Discount Amount(折扣金额)的差。请注意,Discount Amount(折扣金额)是一个自定义金额字段。
* 乘
乘以其值。
使用: 值1 * 值2,用合并字段、表达式或其他数值替换每个值。
返回值: 数值
Consulting_Days__c * 1200
此公式计算咨询天数乘以 1200 的数值,假定此公式字段是货币数据类型且咨询按每天 1200 美元的价格收费。请注意,Consulting Days(咨询天数)是一个自定义字段。
/ 除
除以其值。
使用: 值1 / 值2,用合并字段、表达式或其他数值替换每个值。
返回值: 数值
AnnualRevenue/ NumberOfEmployees
此公式使用金额字段计算每个员工的收入金额。
IF(NumberOfOpportunities > 0, NumberOfWonOpportunities / NumberOfOpportunities, null)
此公式计算市场活动中业务机会的客户赢得率。
^ 幂
使一个数字变成指定数字的幂。
使用: 数字^整数,用合并字段、表达式或其他数值替换数字,用包含整数的合并字段、表达式或任何整数替换整数。
返回值: 数值
NumberOfEmployees^4
计算员工数的四次幂。
避免使用负整数
() 括号
指定先计算左括号和右括号内的表达式。所有其他表达式均使用标准运算符优先权进行评估。
使用: (表达式1) 表达式2...,用合并字段、表达式或其他数值替换每个表达式。
(Unit_Value__c - Old_Value__c) / New_Value__c
计算旧值与新值的差值,并除以新值。
逻辑运算符
= 与 ==(等于)
计算两个值是否相等。= 和 == 运算符可以互换。
使用: 表达式1=表达式2 或表达式1 == 表达式2,用合并字段、表达式或其他数值替换每个表达式。
返回值: 布尔
ExpiringDate = CreatedDate + 5
如果到期日等于记录的创建日期与五天之和返回 true。
IF(Probability = 1, ROUND(Amount*0.02, 2), 0)
此公式计算佣金金额,具有 100% 可能性的业务机会按 2% 计算佣金。所有其他业务机会的佣金值为零。
具有 90% Probability(可能性 )的业务机将无法获得佣金。
具有 100% Probability(可能性)和 100,000 美元 Amount(金额)的业务机会将获得 2,000 美元的佣金。
不要使用此函数进行空比较,如 MyDateTime__c == null。而应使用 ISBLANK。
!=(不等于)
计算两个值是否不相等。
使用: 表达式1 <> 表达式2 或 表达式1 != 表达式2,用合并字段、表达式或其他数值替换每个表达式。
返回值: 布尔
IF(Maint_Amount__c + Services_Amount__c `<>` Amount, "DISCOUNTED", "FULL PRICE")
如果产品的维护金额和服务金额之和不等于产品金额,此公式将在产品上显示“DISCOUNTED”(已折扣金额)。否则,显示“FULL PRICE”(全价)。请注意,本示例对 Maint Amount(维护金额)和 Services Amount(服务金额)使用两个自定义金额字段。
不要使用此函数进行空比较,如 MyDateTime__c != null。而应使用 ISBLANK。
(小于)
计算一个值是否小于此符号后面的值。
使用: 值1 < 值2,用合并字段、表达式或其他数值替换每个值。
返回值: 布尔
IF(AnnualRevenue < 1000000, 1, 2)
将值“1”赋予小于一百万的收入,将值“2”赋予大于一百万的收入。
>(大于)
计算一个值是否大于此符号后面的值。
使用: 值1 > 值2,用合并字段、表达式或其他数值替换每个值。
返回值: 布尔
IF(commission__c > 1000000, "High Net Worth", "General")
将“High Net Worth”(高资产净值)值赋予大于一百万的佣金。请注意,这是使用佣金自定义字段的文本公式字段。
(小于或等于)
计算一个值是否小于或等于此符号后面的值。
使用: 值1 <= 值2,用合并字段、表达式或其他数值替换每个值。
返回值: 布尔
IF(AnnualRevenue <= 1000000, 1, 2)
将值“1”赋予小于等于一百万的收入,将值“2”赋予大于一百万的收入。
>=(大于或等于)
计算一个值是否大于或等于此符号后面的值。
使用: 值1 >= 值2,用合并字段、表达式或其他数值替换每个值。
返回值: 布尔
IF(Commission__c >= 1000000, "YES", "NO")
将值“YES”(是)赋予大于或等于一百万的佣金。请注意,这是使用自定义货币字段 Commission(佣金)的文本公式字段。
&&(与)
评估两个值或表达式是否都为真。使用此运算符作为逻辑函数 AND 的备选。
使用: 逻辑1 && 逻辑2,以及用您希望评估的值或表达式替换逻辑1 和逻辑2。
返回值: 布尔
IF((Price<100 && Quantity<5),“Small”, null)
如果价格小于 100 并且数量小于五,此公式显示 “Small”。否则此字段为空。
||(或)
评估多个值或表达式中是否至少有一个为真。使用此运算符作为逻辑函数 OR 的备选。
使用: 逻辑1 || 逻辑2,用您希望评估的值或表达式替换任意数量的逻辑引用。
返回值: 布尔
IF(Priority = "High" || Status = "New", ROUND(NOW()-CreatedDate, 0), null)
如果个案 Status(状态)为“New”(新建)或 Priority(优先级)为“High”(高),则此公式返回个案未被处理的天数。如果个案是今天打开的,则该字段显示零。
Discount_Rate__c < 0 || Discount_Rate__c > 0.40
当自定义字段 Discount Rate(折扣率)的值不在 0 和 40% 之间时,此验证规则公式显示下面的错误消息:“Discount Rate cannot exceed 40%.”(折扣率不能超过 40%。)
文本运算符
&(串联)
连接两个或两个以上字符串。
使用: 字符串1&字符串2,用合并字段、表达式或其他值替换每个字符串。
返回值: 文本
"Expense-" & Trip_Name__c & "-" & ExpenseNum__c
此公式在行程名称和支出编号前显示文本“Expense-”。这是使用支出编号自定义字段的文本公式字段。
日期和时间函数
ADDMONTHS
返回的日期是,指定日期之前或之后的指定月数。如果剩余月的天数比起始月少,函数会返回剩余月的最后一天。否则,结果包含与指定日期相同的日组件。
使用: ADDMONTHS (date/datetime,number) ,使用起始日期与添加的月数替换date/datetime和number。
参数:
- 日期、日期时间:
date/datetime日期或日期时间,表示起始日期。 - 数字:
number数值,表示要增加的月数。
返回值: 日期
ADDMONTHS (StartDate, 5)
为开始日期添加 5 个月。例如,如果开始日期是 2017 年 9 月 20 日,结果日期是 2018 年 2 月 20 日;如果开始日期是 2017 年 9 月 30 日,结果日期是 2018 年 2 月 28 日。
支持传入日期或 日期时间类型的参数,但是返回值始终是日期类型,而不可能是日期时间类型。
DATE
从您输入的年、月和日值返回一个日期值。如果公式字段中的 DATE 函数值是无效日期,会返回错误信息。
使用: DATE(年,月,日) ,用一个四位数字年份替换年,用一个两位数字月份替换月,用一个两位数字日期替换日。
参数:
- 年:
number四位数字表示的年份。 - 月:
number表示月份值的数值。 - 日:
number表示日部分的数值。
返回值: 日期
DATE(2005, 1, 2)
创建一个 2005 年 1 月 2 日的日期字段。
参数个数只能是三 个,也不支持传入2005-01-01这种字符串。
当传入的函数参数格式正确但是数值不符合规范时,并不会报错,而是会返回一个可能错误的值,比如如非闰年的DATE(2021,2,29)将返回2021-03-01,DATE(2021,121,29)将返回2031-01-29。
DATEVALUE
为日期、日期时间或文本表达式返回日期值。
使用: DATEVALUE(表达式)
参数: date/datetime/text 日期、日期时间或日期、日期时间格式的文本值的合并字段或表达式
返回值: 日期
DATEVALUE(ClosedDate)
基于结束日期时间字段值显示日期值,参数ClosedDate可以是日期、日期时间类型,也可以是日期、日期时间格式的字符串类型。
DATEVALUE("2005-1-15 12:30")
以日期值形式返回“2005-01-15”。
■ 如果该函数中所引用的字段不是有效的文本或日期时间字段,则该公式中的字段可能显示为异常字符串或错误信息,比如DATEVALUE("2005-111-15") 将返回NaN-NaN-NaN。
■ 当输入日期时,请将日期放在引号内,并使用如下格式:YYYY-MM-DD,即,四位数字年份、两位数字月份和两位数字日期。
■ 如果表达式不在有效的日期范围内(例如,MM 不在 01 和 12 之间),则该公式中的字段将显示“NaN-NaN-NaN”。
■ 该公式始终会返回utc(协调世界时间)0点值,且除非传入的参数明确带了时区信息,否则将始终使用用户的时区计算,比如DATEVALUE('2018-12-12 06:06:06')返回的是2018-12-11,而DATEVALUE('2018-12-12T06:06:06Z')返回的是2018-12-12。
DATETIMEVALUE
返回年份、月份、日和 GMT 时间值。
使用: DATETIMEVALUE(表达式)
参数: text 不带TZ字符的日期/日期时间格式的文本值、合并字段或表达式
返回值: 日期时间
DATETIMEVALUE(TEXT(ClosedDate))
基于结束日期字段值显示日期时间值,参数ClosedDate必须是日期类型,而不可以是日期时间类型, 因为如果ClosedDate是日期时间类型,TEXT(ClosedDate)返回的会是"2020-11-04 03:45:00Z"这种带Z的字符串。
DATETIMEVALUE(SUBSTITUTE(TEXT(ClosedDate), "Z", ""))
基于结束日期字段值显示日期时间值,参数ClosedDate可以是日期类型,也可以是时间类型,因为此示例中把最后的Z字符清除掉了。
DATETIMEVALUE("2005-11-15 17:00:00")
以日期和时间值形式返回“2005-11-15T17:00:00.000Z”(即utc时间2005 年 11 月 15 日17点整)。
DAY
以 1 与 31 之间的一个数字形式返回一个月中的某一天。
使用: DAY(日期)
参数: date 日期字段或值(如 TODAY())
返回值: 数值
DAY(Code_Freeze__c)
返回您的自定义代码冻结日期中的日。请注意,这不适用于“日期时间”字段。
只支持传入日期类型值,不支持“日期时间”类型值,也不支持字符串类型值。
HOUR
以 24数字格式(0~23)返回GMT时区小时值。
使用: HOUR(datetime) ,使用日期时间值或 DATETIMEVALUE() 等值替换 datetime,不支持传入字符串参数。
参数: datetime 日期时间字段或值(如 NOW())
返回值: 数值
HOUR(ClosedDate)
仅根据日期时间完结字段值显示其中的小时。
HOUR(DATETIMEVALUE('2018-12-12 18:06:08'))
返回18,而不是10。
MILLISECOND
以 0 与 999 之间的数字形式,返回毫秒值。
使用: MILLISECOND(datetime) ,使用日期时间值替换 datetime,例如 NOW(),不支持传入日期类型或字符串参数。
参数: datetime 日期时间字段或值(如 NOW())
返回值: 数值
MILLISECOND(DATETIMEVALUE(SUBSTITUTE(TEXT(ClosedDate), "Z", "")))
仅根据完结时间字段的值显示时间字段中的毫秒值。
MILLISECOND(NOW())
返回当前时间的毫秒值,比如125。
MINUTE
以 0 与 60 之间的数字形式,返回分钟值。
使用: MINUTE(datetime) ,使用日期时间值替换 datetime,例如 NOW(),不支持传入日期类型或字符串参数。
参数: datetime 日期时间字段或值(如 NOW())
返回值: 数值
MINUTE(DATETIMEVALUE(SUBSTITUTE(TEXT(ClosedDate), "Z", "")))
仅根据完结时间字段的值显示时间字段中的分钟值。
MINUTE(NOW())
返回当前时间的分钟值,比如12。
MINUTE函数只授受datetime类型作为参数,不支持time,date,text类型作为参数,可以先用DATETIMEVALUE函数进行类型转换后再调用该函数。