2017-04-04 63 views
0

我的目标是计算基于简单的日期范围查询铅记录在当地时间销售人员SOQL不能在本地时间

Integer TotalLeads = [ Select Count() From Lead where createddate >= fromdate CreatedDate <= todate]; 

相当基本的获得日期时间。但是,我遇到的问题是我只想计算“本地”时间而不是UTC的线索;创建日期以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把它的格式我需要,但回到UTC(午夜),我需要它是2017-03-23T07:00:00

有什么建议吗?

谢谢!

+0

想象我做错了什么。日期计算是好的,它与如何传递给批处理作业有关。 – user20719

回答

0

想象我做错了什么。日期计算是好的,它与如何传递给批处理作业有关。