2017-04-04 74 views
0

私の目的は、かなり基本的な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

何か提案がありますか?

ありがとうございます!

+0

私が間違っていたことを実感しました。日付の計算はうまくいきました。これはバッチジョブにどのように渡されたかと関係がありました。 – user20719

答えて

0

私が間違っていたことを実感しました。日付の計算はうまくいきました。これはバッチジョブにどのように渡されたかと関係がありました。

関連する問題