2013-01-23 35 views
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; 

回答

2
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'); 
+2

请包括一些英文解释。 – brandones

2

您的日期应该是2012-11-16T00:00:00Z。请注意T分隔符,而不是日期&时间组件之间的空格,并在末尾添加时区指示符(本例中为GMT)

从顶点开始,您可以使用查询绑定功能,而不是建立一个soql字符串,例如

Date deadline =CaseParameter.Deadline_Date__c; 
List<Case> cases = [select caseNumber,id,Account.Name from Case where deadline__date__c=:deadline]; 
+0

但我怎么做呢?我想如果我添加截止日期(这是一个日期),它应该自动执行。 – raym0nd

+0

我使用soql字符串的原因是基于用户输入动态地构建我的查询。 – raym0nd

+0

然后你需要正确格式化日期/时间。 – superfell

相关问题