ColdFusion 11数据格式

ColdFusion 11数据格式,coldfusion,date-format,coldfusion-11,Coldfusion,Date Format,Coldfusion 11,我正在将我们的一个应用程序从ColdFusion 9.01迁移到ColdFusion 11,遇到了一种情况,即我无法使用“DateFormat”将日期格式化为我想要的格式。我通读了这些文档,因为CF版本中的情况发生了变化,但我真的不明白为什么这不起作用。它在CF 9中工作得很好。我知道这可能很容易,但我只是没有看到 查询(Oracle DB)为我提供了过去30天的列表,循环只是将日期输出从“2014-07-01 00:00:00.0”重新格式化为更友好的显示,即2014年7月1日,但我无法将其格

我正在将我们的一个应用程序从ColdFusion 9.01迁移到ColdFusion 11,遇到了一种情况,即我无法使用“DateFormat”将日期格式化为我想要的格式。我通读了这些文档,因为CF版本中的情况发生了变化,但我真的不明白为什么这不起作用。它在CF 9中工作得很好。我知道这可能很容易,但我只是没有看到

查询(Oracle DB)为我提供了过去30天的列表,循环只是将日期输出从“2014-07-01 00:00:00.0”重新格式化为更友好的显示,即2014年7月1日,但我无法将其格式化为“dd-mmm-yyyy”,它只是将查询的原始输出吐回。我硬编码了日期,通常会有一个cfquerparam。有什么想法吗

<cfquery name="qryDateArray" datasource="#request.db#">
  select trunc(to_date('07/01/2014', 'mm/dd/yyyy') + 1 - rownum) as ref_date
  from dual connect by rownum <= 30
</cfquery>

<cfloop from="1" to="#qryDateArray.recordcount#" index="j">
  <cfset qryDateArray.ref_date[j] = DateFormat(qryDateArray.ref_date[j], "dd-mmm-yyyy")>
</cfloop>

<cfoutput>
  <cfdump var="#qryDateArray#">
</cfoutput>

选择trunc(截止日期('07/01/2014','mm/dd/yyyy')+1-rownum)作为参考日期

从double connect by rownum中,如果您给我们提供了一个可移植的测试用例,而不是一个依赖于您的数据库的测试用例,那就太好了,但我怀疑这是因为ColdFusion对查询列的类型管理变得更加严格

因此,CF将您的
ref_date
列视为日期类型,因此当您尝试将格式化字符串放回查询列时,CF尝试(并成功)将字符串转换回日期

旁白:


我想知道为什么不从一开始就在DB中格式化数据字符串,只按需要的方式返回它,而不是返回其他内容,然后循环调整它。

我无法在CF11上测试这一点,因为我手头没有它。我确实验证了您的代码是否返回了您在这里的CF10环境中运行它时解释的结果。因此,您可以向查询对象添加一列,并将其定义为varchar,然后将格式化数据添加到该列中。这反过来又转储了格式化的日期

<cfquery name="qryDateArray" datasource="#request.db#">
  select trunc(to_date('07/01/2014', 'mm/dd/yyyy') + 1 - rownum) as ref_date
  from dual connect by rownum <= 30
</cfquery>

<cfset aryData  = [] />

<cfloop from="1" to="#qryDateArray.recordcount#" index="j">
  <cfset ArrayAppend(aryData, DateFormat(qryDateArray.ref_date[j], "dd-mmm-yyyy")) />
</cfloop>

<cfset QueryAddColumn(qryDateArray, "STRDATE", "VarChar", aryData) />

<cfoutput>
  <cfdump var="#qryDateArray#">
</cfoutput>

选择trunc(截止日期('07/01/2014','mm/dd/yyyy')+1-rownum)作为参考日期

来自rownum的dual connect,这是打字错误吗?我在您的查询中看到一个未匹配的
)。我猜查询结果是只读的(我一直认为它们是只读的),所以我的第一个测试就是简单地输出
日期格式的结果(qryDateArray.ref_date[j],“dd mmm yyyy”)
谢谢。这是一个输入错误,我已经解决了。我将在不使用cfset的情况下检查结果。出于好奇,您需要更新查询的具体原因是什么?通常您将值保留为日期对象,并且只将其格式化为显示的字符串。此日期查询会导致许多其他人不确定我为什么会这样做。如果涉及的是“日期”(不是字符串),不应该有任何问题匹配。谢谢Adam。查询的输入(日期)来自一个html表单,是用户输入它的方式。这就是为什么它被格式化为dd/mm/yyyy-供最终用户使用。我将返回并从头到尾检查整个数据流。我希望有一个简单的语法修复我错过了,但它看起来对我来说,返回整个过程重新思考一个更好的版本更有意义解决方案,而不是花费我的时间通过cfset/cfloop重新格式化日期。感谢您的输入。非常感谢您的帮助。它工作得非常好。感谢您,我可以从列表中删除这个小问题。