将Coldfusion应用程序迁移到Lucee

时间:2018-08-10 09:59:28

标签: mysql coldfusion lucee

我们的服务器正在从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作为日期的日期,以供参考。

我可能缺少明显的东西,但看不到。

1 个答案:

答案 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()作为替代方案,我想这将比我做的要简洁得多,因此,如果有人提出更好的解决方案,请发表答复。

还要感谢大家的支持和想法。