【Salesforce】SOQLで日付/時間項目の日付のみを使用する

【Salesforce】SOQLで日付/時間項目の日付のみを使用する

SalesforceのSOQLで、検索条件に日付を使う機会は多いかと思います。

日付と日付/時間の比較ももちろん出来るのですが、注意が必要になります。

例えば、標準項目の最終更新日なんかは、日付/時間の項目です。

最終更新日をピンポイントの日付で検索条件にする場合に

List<Account> accountList;
Date targetDate;

targetDate = Date.today();

// レコードを取得する
accountList = [
    select
        Id, LastModifiedDate
    from
        Account
    where
        LastModifiedDate = :targetDate];

のようにそのまま比較してしまうと、時間部分が異なるためにレコードが取得されなかったりします。

どうすれば良いかといえば、最終更新日の日付のみを見るように直してあげます。

https://developer.salesforce.com/docs/atlas.ja-jp.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_date_functions.htm

DAY_ONLYという日付関数があるんですね。

DAY_ONLYを使った場合は

List<Account> accountList;
Date targetDate;

targetDate = Date.today();

// レコードを取得する
accountList = [
    select
        Id, LastModifiedDate
    from
        Account
    where
        DAY_ONLY(LastModifiedDate) = :targetDate];

このようになります。

最終更新日の日付部分だけを比較してくれます。

とっても便利ですね。

No comments.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です