Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何将计算公式从salesforce转换为SQL_Mysql_Sql_Salesforce_Hiveql - Fatal编程技术网

Mysql 如何将计算公式从salesforce转换为SQL

Mysql 如何将计算公式从salesforce转换为SQL,mysql,sql,salesforce,hiveql,Mysql,Sql,Salesforce,Hiveql,salesforce中有一个Opportunity表,该表有一个计算列,名为“Is_XYZ” “Is_XYZ”列的计算公式为- calculatedFormula: IF( AND( OR( AND( UPPER(LeadSource__c) == 'XYZ', DateValue(CreatedDate) > Date(2017,01,01) ),

salesforce中有一个
Opportunity
表,该表有一个计算列,名为“
Is_XYZ

Is_XYZ
”列的计算公式为-

calculatedFormula: IF(
    AND(
        OR(
            AND(
                UPPER(LeadSource__c) == 'XYZ',
                DateValue(CreatedDate) > Date(2017,01,01)
            ),
            AND( Is_PQR ,
                IF(
                    Effective_Date__c <> null,
                    DateValue(CreatedDate) > Effective_Date__c ,
                    TRUE
                ),
                IF(
                    Effective_Date__c <> null,
                    Effective_Date__c <= TODAY(),
                    TRUE
                )
            )
        ),
        UPPER(MailingState) <> 'NY',
        UPPER(Lead_Sub_Source__c) <> 'PQRS' 
    ), 
    TRUE,
    FALSE
)
你能帮我确认两个公式(salesforce和SQL)是相同的吗?我的意思是,你能证明上面两个公式做的是相同的事情吗。 我在两个方面(salesforce和HiveSQL)对它进行了测试,它的表现有所不同。这种情况下的值为-

LeadSource__c                        = abcdef
Lead_Sub_Source__c                   = klmnop
CreatedDate                          = 2019-04-02T00:06:49.000Z
MailingState                         = HI
Is_PQR                               = true
Effective_Date__c                    = 2019-04-09

对于上述值,salesforce显示
Is_XYZ=true
,hive显示
Is_XYZ=false
。请帮助我确定问题。

我可以看出,由于值上的时间成分,日期/时间算术不正确。我不知道你的坏榜样是否就是这个问题

例如:

DateValue(CreatedDate) > Date(2017,01,01)
不等同于:

CreatedDate > '2017-01-01'
等同于:

CreatedDate >= '2017-01-02'
问题是删除时间组件的
DateValue()

同样地

DateValue(CreatedDate) > Effective_Date__c ,

需要修改。

最后,我们发现Salesforce公式中存在错误

在Salesforce公式中,我们检查“
Effective\u Date\u c null
”,它总是返回
false
。在Salesforce中,最好使用
IsBlank()
函数,而不是
IsNull()
。 因此,我们在Salesforce中更改了CalculatedFormula以更正此问题。新公式将为-
为空(生效日期)

我不是Salesforce开发人员,因此无法更早地发现此错误。在与Salesforce开发人员讨论后,我们能够找到系统中去年出现的这个bug


我在Salesforce workbench中找不到任何方法来测试/调试这个计算字段公式,这非常令人沮丧。

乍一看,我还认为这可能是由于比较了date和datetime数据类型所致。但createdDate和EffectiveDate之间的差异超过1天,所以这个问题不是由于日期字段之间的比较造成的。谢谢你@Gordon的回答。
DateValue(CreatedDate) > Effective_Date__c ,