将coldfusion应用程序迁移到lucee

5cnsuln7  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(386)

我们的服务器正在从coldfusion变为lucee服务器,我的任务是更新几个web应用程序的代码。我不是coldfusion的大师,但我经常能找到解决问题的方法,这就是我的问题。
我正在转换的代码引发了以下错误:无法将对象类型[datetime]强制转换为类型[array]的值
我一直在处理所有的查询,并确保输出被适当地转换,这解决了大多数问题,但困扰我的一小段代码会抛出上述错误。代码是:

<cfset summaryStartDate = ArrayMin( qSummaryData["minHours"] ) />
<cfset summaryMaxDate = ArrayMax( qSummaryData["maxHours"] ) />
<cfset summaryEndDate = DateAdd("d", -(DayofWeek(#summaryMaxDate#))+6, #summaryMaxDate# ) />

minhours和maxhours都是datetime格式。我知道在coldfusion版本中,它们的输出是这样的:
摘要开始日期:41204摘要最大日期:43465摘要结束日期:{ts'2019-01-04 00:00:00'}
对我来说,这意味着coldfusion正在以某种方式进行转换,而lucee并没有这样做(或者至少从我读到的内容来看)。数据库为mysql,minhours和maxhours输出为日期,时间为00:00:00,仅供参考。
我可能错过了一些明显的东西,但我看不见。

eni9jsuy

eni9jsuy1#

我用“这不是最好的解决办法”作为这个答案的序言,但它确实有效。在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的#s,但我还没有做出改变。andrewdixon提到使用query.reduce()作为一种替代方法,我认为这比我所做的要简洁得多如果有人提出更好的解决方案,请作为答案发布。
也感谢大家的支持和想法。

相关问题