私の目的は、かなり基本的なSalesforceのSOQLは、現地時間で日時を取得することはできません
Integer TotalLeads = [ Select Count() From Lead where createddate >= fromdate CreatedDate <= todate];
現地時間で簡単な日付範囲クエリに基づいてリードレコードをカウントすることです。しかし、私が取り組んでいる問題は、UTCではなく「地方」の時間のリードだけを数えたいということです。 createddateはUTCのリードレコードです。
サンプル日付: から:2017年3月23日 へ:これらのサンプルの日付については2017年3月29日
と私のローカル時間がUTCである - 7(ロサンゼルス)、ので、私のクエリは
だろうInteger TotalLeads = [ Select Count() From Lead where createddate >= 2017-03-23T07:00:00z AND CreatedDate <= 2017-03-30T06:59:59z];
これらは私の日付であれば、どのように私は日からように、ローカルタイムを追加しないこと2017-03-23T07です:00:00Zと日付には2017-03-30T06です:59:59z?最初の日から使用
が、私は次の操作を行うことができましたが、あなたが見ることができるように現地時間
// Date
date ds = date.valueof('2017-03-23');
string dm = string.valueOf(ds.month());
string dd = string.valueOf(ds.day());
string dy = string.valueOf(ds.year());
// DateTime Midnight (UTC)
String SDate = string.valueof(dm +'/' + dd + '/' + dy + ' 12:00 AM');
system.debug(SDate); // -> 3/23/2017 12:00 AM
// DateTime (Local Time)
datetime ds2 = datetime.parse(SDate);
system.debug(ds2); // -> 2017-03-23 07:00:00
system.debug(ds2.format('yyyy-MM-dd\'T\'hh:mm:ss'')); // -> 2017-03-23T12:00:00
でそれを維持する方法を理解することはできません、使用してds2.formatはフォーマットでそのを置くI私はそれが2017-03-23T07になる必要があります:00:00
何か提案がありますか?
ありがとうございます!
私が間違っていたことを実感しました。日付の計算はうまくいきました。これはバッチジョブにどのように渡されたかと関係がありました。 – user20719