【发布时间】:2018-08-10 09:59:27
【问题描述】:
我们的服务器正在从 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 摘要最大日期:43465 summaryEndDate: {ts '2019-01-04 00:00:00'}
对我来说,这意味着 Coldfusion 正在以某种方式进行转换,而 Lucee 没有这样做(或者至少从我所读到的内容来看)。数据库为 mySQL,minHours 和 maxHours 输出为日期,时间为 00:00:00,供参考。
我可能遗漏了一些明显的东西,但我看不到。
【问题讨论】:
-
错误来自哪一行,第一行?
-
@andrewdixon 好问题。我得到的输出是第 449 行,它作为 codePrintPlain 输出:codePrintPlain": "447: \t\t\t\n448: \t\t\t\t\t\t\n449: \t\t
\n450: \t\t \t\t\n451: \t\t \n -
@andrewdixon 我已经注释掉了每一个,看看它是否只有一个,但前两个肯定会抛出相同的错误,而第三个会抛出前两个不存在的错误。
-
@andrewdixon 嗨,安德鲁。正确的 qSummaryData 是在这些 cfset 之前发生的查询,所以你是正确的,它是列输出。根据我收集的代码序列,ArrayMin 的目的是选择该集合中最早的日期,而我认为 ArrayMax 将是最近的日期,coldfusion 正在做一些工作以使其作为一个数组工作。我会尝试重写那些,所以我完全避免了数组传输,并希望能解决它。
-
根据查询的使用方式,您也可以在 SQL 中执行 MIN/MAX 而不是 CF...
标签: mysql coldfusion lucee