【Apex】動的SOQLのWHERE句で日付を指定する方法

日付を条件とするときは、以下の2点に注意します。
1.yyyy-MM-dd形式の文字列に変換する
(誤)WHERE Close Date <= ' + myDate
(正)WHERE Close Date <= ' + String.valueOf(myDate)

日付を文字列に変換するときのフォーマットは、yyyy-MM-dd形式である必要があります。
Date型ならば、String.valueOf(myDate)を使うことで自動的にこのフォーマットに変換されます。
もし、Date型ではなく、yyyy/MM/dd形式のString型文字列を日付の条件として扱いたい場合は、
Date.parseメソッドを使用して、一度、日付型に変換した上で、yyyy-MM-dd形式の文字列に変換します。
例)
String strDate = ‘2011/12/31’;
Date myDate = Date.parse(strDate);
… WHERE Close Date <= ' + String.valueOf(myDate)

2.変換した日付文字列をシングルクォーテーションでくくらない
(誤)WHERE Close Date <= \'' + String.valueOf(myDate) + '\''
(正)WHERE Close Date <= ' + String.valueOf(myDate)

下記URLから転載致します
http://www.kokyakukanri.info/salesforce/blog/2011/02/apexsoqlwhere.html

コメントを残す

メールアドレスが公開されることはありません。