2017-04-04 2 views
0

Mon objectif est de compter les enregistrements de plomb basé sur une requête de plage de dates simple heure localesalesforce SOQL ne peut pas se datetime à l'heure locale

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

assez basique. Cependant, le problème que je rencontre est que je veux seulement compter les prospects pour l'heure "locale" pas UTC; createddate est en UTC pour les enregistrements de piste.

dates exemples: De: 23/03/2017 Pour: 03/29/2017

Pour ces dates d'échantillonnage et mon heure locale est UTC - 7 (Los Angeles), de sorte que ma requête serait

Integer TotalLeads = [ Select Count() From Lead where createddate >= 2017-03-23T07:00:00z AND CreatedDate <= 2017-03-30T06:59:59z]; 

Si ce sont mes dates, comment puis-je l'heure locale joins donc de la date est 2017-03-23T07: 00: 00Z et à ce jour est 2017-03-30T06: 59: 59Z?

L'utilisation de la date d'abord, j'ai pu faire ce qui suit, mais ne peut pas comprendre comment le garder à l'heure locale

 // 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 

Comme vous pouvez le voir, en utilisant ds2.format a mis son au format I besoin mais retour à UTC (minuit), je l'ai besoin pour être 2017-03-23T07: 00: 00

Des suggestions?

Merci!

+0

J'ai compris ce que je faisais de mal. Le calcul de la date était bon, il avait à voir avec la façon dont cela passait à un travail par lots. – user20719

Répondre

0

J'ai compris ce que je faisais de mal. Le calcul de la date était bon, il avait à voir avec la façon dont cela passait à un travail par lots.