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

时间:2018-08-01 13:24:53

标签: coldfusion google-visualization

我在查询中以这种格式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>
            ]); 

但是控制台出现错误:

  

未捕获(承诺)错误:类型不匹配。值504.5不匹配   在列索引0中键入字符串

1 个答案:

答案 0 :(得分:4)

尝试将#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>