tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:SOQLと年月検索

f:id:tyoshikawa1106:20140928222808p:plain

SOQLクエリによる日付の検索には専用の関数が用意されています。例えば年を取得する"CALENDAR_YEAR()"や月を取得する"CALENDAR_MONTH()"などです。これを利用することで日付の検索条件を効率よく指定することができます。


商談の完了予定日の年月を条件に指定して検索したい場合の処理だとこんな感じで検索できます。

public List<Opportunity> getOpportunies(Integer year, Integer month) {
    return [
        SELECT
             Id
            ,Name
            ,Amount
            ,StageName
        FROM
            Opportunity
        WHERE
            CALENDAR_YEAR(CloseDate) =: year
        AND
            CALENDAR_MONTH(CloseDate) =: month
        ORDER BY Name ASC, Amount ASC
        LIMIT 200
    ];
}


一ヶ月間の商談を検索したいようなときに、わざわざ月初日と月末日を取得して条件に指定するような必要もないのですごく便利です。WHEREだけでなくSELECTやGROUP BYに対しても使用することができます。

追記

完了予定日など日付型の項目では気にする必要はありませんが、日時型の項目を扱う場合にはタイムゾーン周りに注意が必要になります。