2

アプリケーションの 1 つを ColdFusion 9.01 から ColdFusion 11 に移行しようとしていますが、"DateFormat" を使用して希望どおりにフォーマットされた日付を取得できない状況に遭遇しました。CFバージョンで状況が変わったのでドキュメントを読みましたが、正直なところ、これが機能しない理由がわかりません。それは CF 9 で見事に機能しました。おそらく非常に簡単なことだとは思いますが、私はそれを見ていないだけです。

クエリ (Oracle DB) は過去 30 日間のリストを提供し、ループは日付出力を "2014-07-01 00:00:00.0" から 01-Jul-2014 のより見やすい表示に再フォーマットするだけです。 「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>
4

2 に答える 2

1

手元にないため、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>

ここに画像の説明を入力

クエリ列名に依存している場合は、ここで説明されているベンの方法のようなものを使用して、列の名前を変更できます 。名前.htm

于 2014-07-10T16:42:36.163 に答える