【Salesforce】SOQLで日付/時間項目の日付のみを使用する
SalesforceのSOQLで、検索条件に日付を使う機会は多いかと思います。
日付と日付/時間の比較ももちろん出来るのですが、注意が必要になります。
例えば、標準項目の最終更新日なんかは、日付/時間の項目です。
最終更新日をピンポイントの日付で検索条件にする場合に
List<Account> accountList; Date targetDate; targetDate = Date.today(); // レコードを取得する accountList = [ select Id, LastModifiedDate from Account where LastModifiedDate = :targetDate];
のようにそのまま比較してしまうと、時間部分が異なるためにレコードが取得されなかったりします。
どうすれば良いかといえば、最終更新日の日付のみを見るように直してあげます。
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.