首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL与冷融日期问题

MySQL与冷融日期问题
EN

Stack Overflow用户
提问于 2013-01-23 19:39:20
回答 5查看 1.9K关注 0票数 2

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

代码语言:javascript
复制
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

当我直接在Mysql上运行它时,这个查询工作得很好,但是在coldfusion应用程序中不起作用。我被困住了!生成日期的代码是:

代码语言:javascript
复制
login_date >= STR_TO_DATE(
                 '#DateFormat(CreateODBCDate(startDate),'mm/dd/yyyy')#'
                 , '%m/%d/%Y'
              )

ColdFusion的错误是:

您的SQL语法有错误;请检查与MySQL服务器版本相对应的手册,以获得在“01/16/2013”、“%m/%d/%Y”和login_date <= STR_TO_DATE(‘01/17/2013“、’%m/%d/‘)附近使用的正确语法。

这里怎么了?

编辑

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

代码语言:javascript
复制
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'') 

有更多的报价左右的日期,他们是造成问题。如果删除代码中添加的额外内容,则不会添加任何内容。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-01-23 20:09:15

CFQUERY喜欢自动转义单引号。要让它按照您编写的方式工作,您需要用preserveSingleQuotes()包装东西,以防止CF添加额外的单引号。或者使用其他日期比较建议之一重写它。

票数 1
EN

Stack Overflow用户

发布于 2013-01-23 19:59:12

(从我之前的评论.)

绝对没有必要使用dateFormatstr_to_dateDateFormat是为表示设计的,并返回一个字符串。您应该使用的是日期对象。CreateODBCDate已经给了你这个机会。所以只需在查询中直接使用它。(显然,您应该始终首先验证输入。)

代码语言:javascript
复制
 WHERE column >= #CreateODBCDate(startDate)#  
 ....

。。或者更好的方法是使用cfqueryparam:

代码语言:javascript
复制
 WHERE column >= <cfqueryparam cfsqltype="cf_sql_date" value="#startDate#">
票数 7
EN

Stack Overflow用户

发布于 2013-01-23 19:56:27

使用查询参数和日期对象而不是字符串。如下所示:

代码语言:javascript
复制
AND login_date >= <cfqueryparam cfsqltype="cf_sql_date" value="#CreateDate(2013,1,16)#"> 
AND login_date <= <cfqueryparam cfsqltype="cf_sql_date" value="#CreateDate(2013,1,17)#">
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14487963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档