Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Highcharts:在图表中使用“按日期分组”时出现问题_Javascript_Sql_Datetime_Highcharts_Gettime - Fatal编程技术网

Javascript Highcharts:在图表中使用“按日期分组”时出现问题

Javascript Highcharts:在图表中使用“按日期分组”时出现问题,javascript,sql,datetime,highcharts,gettime,Javascript,Sql,Datetime,Highcharts,Gettime,我有一个折线图,可以很好地处理以下查询: SELECT peakdate, peakusage FROM peaktable WHERE peakDate BETWEEN '#arguments.dtBegin#' AND '#arguments.dtEnd#' ORDER BY peakdate 日期输出类似于:2014-01-01 00:00:00.0,我可以将其转换为datetime图表的毫秒。我使用JavaScript getTime()函数转换日期,一切正常

我有一个折线图,可以很好地处理以下查询:

SELECT peakdate, peakusage
FROM peaktable
WHERE peakDate BETWEEN '#arguments.dtBegin#' AND '#arguments.dtEnd#'             
ORDER BY peakdate
日期输出类似于:2014-01-01 00:00:00.0,我可以将其转换为datetime图表的毫秒。我使用JavaScript getTime()函数转换日期,一切正常

现在,我需要显示每天的最大峰值,而不是在图表上显示所有数据点。以下是我编写的在SQL Server中运行良好的查询:

SELECT convert(varchar(10), peakdate, 120) as peakdate , MAX(peakusage)
FROM peaktable
WHERE peakDate BETWEEN '#arguments.dtBegin#' AND '#arguments.dtEnd#'
GROUP BY convert(varchar(10), peakdate, 120)     
ORDER BY convert(varchar(10), peakdate, 120)
该文件的日期输出看起来像2014-01-01,没有时间结束。我将它保存在varchar(10)中,以便在日期级别进行分组。不幸的是,JavaScript getTime()函数抛出了一个错误,因为日期没有附加任何时间元素。所以我认为我很聪明,我在SQL语句中将00:00:00.0连接到了日期的末尾,但它仍然抛出了一个错误。我猜JavaScript并没有将其视为日期:

SELECT CONCAT(convert(varchar(10), peakdate, 120),' 00:00:00.0') as peak , MAX(peakusage)
FROM peaktable
WHERE peakDate BETWEEN '#arguments.dtBegin#' AND '#arguments.dtEnd#'
GROUP BY convert(varchar(10), peakdate, 120)     
ORDER BY convert(varchar(10), peakdate, 120) 

有人对如何在Highcharts datetime图表中使用没有时间元素的日期对象有什么想法吗?下一个我需要用图表显示的查询是这个月的峰值。因此,日期格式将类似于yyyy-mm。

“它显示了一个错误”。什么错误?现在它正在返回peak的字符串。您需要将其转换回datetime。虽然为了记录在案,我不确定你为什么要这么做。您也可以只选择日期时间。所以问题在于以正确的形式返回数据(我指的是时间戳)或正确查询数据库?json是什么样子的?在sql查询中
选择CONCAT(CONCAT)(convert(varchar(10),peakdate,120),'00:00:00.0')作为peak…,
而不是
peak
是否应该是
peakdate
?@Jenn您的建议有效;将日期重新设置为datetime已生效。这样做的目的是减少图表上的噪音。日期的Group By转换返回getTime()函数无法读取的日期对象。因此,我认为通过使用连接,我可以模拟datetime对象;JavaScript将其视为一个字符串。但是通过在使用getTime()之前将字符串重新设置为日期时间,一切都正常了。