0

以下を実行しようとすると、このエラーが発生します。コントローラーに直接バインドされている Visualpage から締め切り日を取得します。

QueryException: line 1:322 no viable alternative at character ' '

実行されている私のクエリ:

 Select c.CaseNumber,c.Status,c.ID, Account.Name, Account.Status__c, Account.Type,Account.Location_Type__c,Account.BillingCountry,Contact.Name, Contact.Email FROM Case c where c.BatchNumber__c = 'a0dR0000003dfBbIAI' and c.Deadline_Date__c = 2012-11-16 00:00:00

私のコード:

  Date deadline = CaseParameter.Deadline_Date__c;
  soql = 'Select c.CaseNumber,c.Status,c.ID, Account.Name, Account.Status__c, Account.Type,Account.Location_Type__c,Account.BillingCountry,Contact.Name, Contact.Email  FROM Case c  where c.BatchNumber__c = \''+batchNumber+'\''; 
  soql+= ' and c.Deadline_Date__c = '+deadline;
4

2 に答える 2

2

あなたの日付は です2012-11-16T00:00:00Z。日付と時刻の構成要素の間のスペースではなく T 区切り記号に注意し、最後にタイムゾーン インジケーターを追加します (この場合は GMT)。

apex から、soql 文字列を作成するのではなく、クエリ バインディング機能を使用できます。

Date deadline =CaseParameter.Deadline_Date__c;
List<Case> cases = [select caseNumber,id,Account.Name from Case where deadline__date__c=:deadline];
于 2013-01-23T15:46:22.583 に答える
1
datetime deadline =  datetime.newInstance(CaseParameter.Deadline_Date__c,Time.newInstance(0, 0, 0, 0));
  soql = 'Select c.CaseNumber,c.Status,c.ID, Account.Name, Account.Status__c, Account.Type,Account.Location_Type__c,Account.BillingCountry,Contact.Name, Contact.Email  FROM Case c  where c.BatchNumber__c = \''+batchNumber+'\''; 
  soql+= ' and c.Deadline_Date__c = '+deadline.format('yyyy-MM-dd');
于 2013-01-24T10:58:57.017 に答える