gpt4 book ai didi

mysql - 查询中的 Coldfusion MySQL 查询

转载 作者:行者123 更新时间:2023-11-29 04:17:09 26 4
gpt4 key购买 nike

我正在尝试从为特定用户检索的完整记录集中检索属于特定年份和月份的记录。首先,有问题的字段itemdate是MySql类型的Datetime(例如2016-08-15 20:00:25)。一个用户有4行记录:

2016-08-15 20:00:25
2015-06-01 20:25:05
2016-08-15 20:26:00
2016-08-15 23:30:35

特定用户的这些记录通过以下方式检索:

<cfquery datasource="userdatbase"name="reportlist">
select itemid, itemdate, itemvalue
from itemlib
where userid = '#currentuserid#'
</cfquery>

当前年份和月份由以下因素确定:

<cfset thisyear = #Year(Now())#>
<cfset thismonth = #Month(Now())#>

现在过滤原始查询并仅获取当前年份和月份的查询:

    <cfquery dbtype="query" name="detail"> 
select itemid, itemdate, itemvalue
from reportlist
where year(itemdate) = #thisyear#
and month(itemdate) = #thismonth#
</cfquery>

我收到以下错误:

执行数据库查询时出错。

Query Of Queries 语法错误。遇到“年。条件表达式不正确,应为[like|null|between|in|comparison]条件之一,

我尝试这样做:

    <cfquery dbtype="query" name="detail"> 
select itemid, itemdate, itemvalue
from reportlist
where #year(reportlist.itemdate)# = #thisyear#
and #month(reportlist.itemdate)# = #thismonth#
</cfquery>

这将消除错误。但是,我在 detail 查询中得到了所有 4 行记录,而不是预期的 3 行。我不希望 2015-06-01 20:25:05 记录被选中,但确实如此。我正在为此挠头。任何帮助表示赞赏。提前谢谢你。

最佳答案

coldfusion Query of Queries (QofQ) 不具备 dbms 的全部功能。 year() QofQ 语法不支持。

您的第二个查询在语法上是正确的,因为它传递了 reportlist.itemdate 的值, 这将是 itemdate 的值在查询的第一行 reportlist (假设您没有遍历 reportlist )。 ColdFusion 将此解释为比较两个文字值而不是比较查询中的行值。

或者,您可以将变量 ( fromDate ) 设置为所需月份的第一个日期,然后在项目日期为 >= 的地方过滤查询。 fromDate 和 <从日期加 1 个月。见下文:

<!--- set fromDate to the first date of the month --->
<cfset fromDate = createDate(thisyear, thismonth, 1) />
<cfquery dbtype="query" name="detail">
select itemid, itemdate, itemvalue
from reportlist
where itemdate >= <cfqueryparam value="#fromDate#" cfsqltype="cf_sql_date" />
and itemdate < <cfqueryparam value="#dateAdd('m', 1, fromDate)#" cfsqltype="cf_sql_date" />
</cfquery>

这通过使用 ColdFusion QoQ 中支持的比较器来完成同样的事情。

此处提供一些有用的文档:http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec0e4fd-7ff0.html

关于mysql - 查询中的 Coldfusion MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38983231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com