salesforce SOQL无法在当地时间获取日期时间

时间:2017-04-04 23:57:51

标签: salesforce apex soql

我的目标是根据当地时间的简单日期范围查询计算潜在客户记录

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

相当基本。但是,我遇到的问题是我只想计算“本地”时间而非UTC的线索; createddate是UTC中的潜在客户记录。

示例日期: 从:03/23/2017 致于:03/29/2017

对于这些样本日期和当地时间是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

有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

想出我做错了什么。日期计算很好,它与传递给批处理作业的方式有关。