MySQL和Coldfusion日期问题

Vai*_*esh 2 mysql sql coldfusion

timestamp在MySQL表中有一个字段.我试图使用以下SQL查询查询表:

SELECT  login_mode,count(login_mode) as total 
FROM    login_activity,ccac_registered_users 
WHERE   login_activity.student_id=ccac_registered_users.student_id 
AND     login_date >= STR_TO_DATE('01/16/2013','%m/%d/%Y') 
AND     login_date <= STR_TO_DATE('01/17/2013','%m/%d/%Y') 
GROUP BY login_mode
Run Code Online (Sandbox Code Playgroud)

当我直接在Mysql上运行它时查询工作正常,但是从coldfusion应用程序无效.我很难过!生成日期的代码是:

login_date >= STR_TO_DATE(
                 '#DateFormat(CreateODBCDate(startDate),'mm/dd/yyyy')#'
                 , '%m/%d/%Y'
              )
Run Code Online (Sandbox Code Playgroud)

ColdFusion的错误是这样的:

您的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便在'01/16/2013'',''%m /%d /%Y''附近使用正确的语法,并且login_date <= STR_TO_DATE('''01/17/2013'',''%m /%d /'在第1行

这有什么不对?

编辑

我刚刚转储了CF试图执行的sql.

SELECT login_mode,count(login_mode) as total 
FROM   login_activity,ccac_registered_users 
WHERE  login_activity.student_id=ccac_registered_users.student_id 
AND    login_date >= STR_TO_DATE(''01/16/2013'',''%m/%d/%Y'') 
AND    login_date <= STR_TO_DATE(''01/17/2013'',''%m/%d/%Y'') 
Run Code Online (Sandbox Code Playgroud)

日期附近还有其他引号,它们导致了问题.如果我删除了我从代码中添加的额外内容,那么就不会添加任何内容.

Lei*_*igh 7

(根据我之前的评论......)

应该绝对没有必要使用dateFormatstr_to_date.DateFormat专为演示而设计并返回一个字符串.你应该使用的是日期对象.CreateODBCDate已经给你了.所以只需在查询中直接使用它.(显然你应该首先验证输入)

 WHERE column >= #CreateODBCDate(startDate)#  
 ....
Run Code Online (Sandbox Code Playgroud)

..或者更好,使用cfqueryparam:

 WHERE column >= <cfqueryparam cfsqltype="cf_sql_date" value="#startDate#">
Run Code Online (Sandbox Code Playgroud)