Account判断Opportunity记录是否存在而且最晚的最后修改日期是6个月前
2023年09月08日
文章浏览:209

public static Boolean isOpportunityExistAndLastModifiedInSpecifiedTime(Id accountId,DateTime SpecifiedTime) {

    // 查询Account的IsExpired字段

    Account acc = [SELECT Id, IsExpired__c

                   FROM Account

                   WHERE Id = :accountId];


    // 获取Opportunity中与Account相关的所有Opportunity记录

    List<Opportunity> oppList = [SELECT Id, LastModifiedDate

                                 FROM Opportunity

                                 WHERE AccountId = :accountId];


    // 如果有Opportunity记录

    if (!oppList.isEmpty()) {

        // 查找Opportunity中最晚的LastModifiedDate

        DateTime latestModifiedDate = oppList[0].LastModifiedDate;

        for (Opportunity opp : oppList) {

            if (opp.LastModifiedDate > latestModifiedDate) {

                latestModifiedDate = opp.LastModifiedDate;

            }

        }

        

        // 判断最晚的LastModifiedDate是否距离今天超过6个月

        DateTime sixMonthsAgo = System.now().addMonths(-6);

        if (latestModifiedDate > sixMonthsAgo) {

            return true;//LastModifiedDate在6个月内

        }

    }

    return false;

}


关注 收藏
2023年09月08日


是不是用下面的这些代码,也能够实现?

Date todaysDate = Date.today();
Date lastYearDate = Date.today() - 365;
        
List <Opportunity> allOpportunities = [SELECT Id, CreatedDate
                        FROM Opportunity 
                        WHERE LastModifiedDate >: lastYearDate AND LastModifiedDate <: todaysDate 
                        AND AccountId = :accountId
                       ];


回复
lyc 回复 yusizhong 厉害,查询的时候就筛选了,更加简洁
回复
2023年09月08日

还有这种用法呢。

SELECT Id FROM Opportunity WHERE CreatedDate = LAST_YEAR 

SELECT Id FROM Account WHERE CreatedDate = LAST_90_DAYS

SELECT Id FROM Account WHERE CreatedDate = LAST_N_DAYS:365  (这里的数字可以自己灵活指定)


详细可以参照下面的文章

【Date Formats and Date Literals in WHERE】

 https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_dateformats.htm?q=LAST_YEAR 


日期条件的执行效果

回复