我们的服务器正在从Coldfusion更改为Lucee服务器,我的任务是为几个Web应用程序更新代码。我不是Coldfusion的专家,但我经常可以想出办法解决问题,以结束查询。
我正在转换的代码抛出此错误: 无法将对象类型[DateTime]强制转换为类型[Array]的值
我一直在处理所有查询,并确保输出正确地CAST,从而解决了大多数问题,但是困扰我的一小段代码会引发上述错误。代码是:
<cfset summaryStartDate = ArrayMin( qSummaryData["minHours"] ) />
<cfset summaryMaxDate = ArrayMax( qSummaryData["maxHours"] ) />
<cfset summaryEndDate = DateAdd("d", -(DayofWeek(#summaryMaxDate#))+6, #summaryMaxDate# ) />
minHours和maxHours均为DATETIME格式。我知道在Coldfusion版本中,它们的输出如下:
summaryStartDate:41204 summaryMaxDate:43465 summaryEndDate:{ts'2019-01-04 00:00:00'}
对我来说,这意味着Coldfusion正在以某种方式进行转换,而Lucee则不这样做(或至少从我所读的内容中)。该数据库是mySQL,minHours和maxHours输出为小时中以00:00:00作为日期的日期,以供参考。
我可能缺少明显的东西,但看不到。
答案 0 :(得分:0)
我以“这不是最大的解决方案”作为开头,但确实有效。从andrewdixon的队列中,我看到了逐步使用数组(数据不适合该数组)的步骤,并研究了替代方法。
我解决了一个查询查询,提取了最小值,然后将其设置为cfset。在最大值之后执行相同的操作。我的两个查询是:
<cfquery name="smallestFigure" dbtype="query">SELECT CAST(MIN(minHours) AS DATETIME) as outputMin FROM qSummaryData;</cfquery>
<cfquery name="largestFigure" dbtype="query">SELECT CAST(MAX(maxHours) AS DATETIME) as outputMax FROM qSummaryData;</cfquery>
我将它们设置为summaryStartDate和summaryMaxDate,以便可以运行此行(在原始帖子中提到):
<cfset summaryEndDate = DateAdd("d", -(DayofWeek(#summaryMaxDate#))+6, #summaryMaxDate# ) />
Shawn提到我在summaryMaxDate周围不需要#,但是我还没有进行更改。 andrewdixon提到使用query.reduce()作为替代方案,我想这将比我做的要简洁得多,因此,如果有人提出更好的解决方案,请发表答复。
还要感谢大家的支持和想法。