如何将 DateTime 从查询转换为字符串以便在 Google 可视化图表中使用它?

How to convert DateTime to String from query for using it in Google Visualization Chart?

我在查询中获取了这种格式的日期数据2018-04-01 00:00:00.0,并使用以下代码将其作为字符串添加到列中:

var data = new google.visualization.DataTable();
        data.addColumn('string', 'StartDate');
        data.addColumn('number', 'Deficiency');
        data.addColumn('number', 'Withdraw');
        data.addColumn('number', 'Rain');
        data.addRows([
        <cfoutput query="display_data">
            [
            #dateTimeFormat(STARTPERIOD, "yyyy/dd/mm")#,
            #NumberFormat(DEF, '.9')#,                          
            #NumberFormat(WD,'.9')#,
            #NumberFormat(RAIN,'.9')#,
            ],
         </cfoutput>
            ]); 

但我在控制台中收到错误消息:

Uncaught (in promise) Error: Type mismatch. Value 504.5 does not match type string in column index 0

尝试将 #dateTimeFormat(STARTPERIOD, "yyyy/dd/mm")# 放在引号中。喜欢 "#dateTimeFormat(STARTPERIOD, "yyyy/dd/mm")#".

var data = new google.visualization.DataTable();
    data.addColumn('string', 'StartDate');
    data.addColumn('number', 'Deficiency');
    data.addColumn('number', 'Withdraw');
    data.addColumn('number', 'Rain');
    data.addRows([
    <cfoutput query="display_data">
        [
        '#dateTimeFormat(STARTPERIOD, "yyyy/dd/mm")#',
        #NumberFormat(DEF, '.9')#,                          
        #NumberFormat(WD,'.9')#,
        #NumberFormat(RAIN,'.9')#,
        ],
     </cfoutput>
]); 

我的方法如下。

<cfset dataArray = []>
<cfloop query="display_data">
  <cfset ArrayAppend(dataArray, [dateTimeFormat(display_data.STARTPERIOD, "yyyy/dd/mm"), NumberFormat(display_data.DEF, '.9'), NumberFormat(display_data.WD,'.9'), NumberFormat(display_data.RAIN,'.9')])>
</cfloop>
<script>
  var data = new google.visualization.DataTable();
    data.addColumn('string', 'StartDate');
    data.addColumn('number', 'Deficiency');
    data.addColumn('number', 'Withdraw');
    data.addColumn('number', 'Rain');
    data.addRows(<cfoutput>#serializeJSON(dataArray)#</cfoutput>);
</script>

对于 ColdFusion 2016 及更高版本,您可以使用以下内容。

<cfscript>
  dataArray = [];
  display_data.each(function(value, index){
    dataArray.append([dateTimeFormat(value.STARTPERIOD, "yyyy/dd/mm"), NumberFormat(value.DEF, '.9'), NumberFormat(value.WD,'.9'), NumberFormat(value.RAIN,'.9')]);
  });
</cfscript>