-3
$SQLString = "SELECT    
                count(score) as counts,
                score, month,
                date FROM persons  
                GROUP BY day, month, year 
            ORDER BY date asc";     

    $result = mysql_query($SQLString);   
    $num = mysql_num_rows($result);   


$data[0] = array('day','counts');       
    for ($i=1; $i<($num+1); $i++)
    {
        $data[$i] = array(substr(mysql_result($result, $i-1, "date"), 0, 10),
            (int) mysql_result($result, $i-1, "counts"));
    }   
    echo json_encode($data);

这会输出如下内容:

[["day","counts"],["2012-01-20",1],["2012-02-06",1],["2012-11-16",2],["2013-04-13",1]] 

我的问题是我需要日期类型的日期值(例如“2012-01-20”)而不是字符串。

我真的需要你的帮助...

4

1 回答 1

1

MySQL 日期值是字符串。如果您将它们存储为纯文本,它们将被视为整数减法,例如

 2012-01-02 -> 2012 minus 1 minus 2 -> 2009

Javascript 没有原生的“日期”字符串。只有 Date 对象,不能用 JSON 字符串表示。如果你想要整数,你必须将它们存储为 unix 时间戳,例如

2012-01-20 00:00:00 -> 1327039200

但是,请注意 Javascript 使用毫秒作为其时间戳值,因此您需要

1327039200000

作为要通过的值。

请注意,您的代码效率非常低。mysql_result 非常缓慢,而且很难使用。你可以简单地用

$sql = "SELECT COUNT(score) AS counts, unix_timestamp(yourdatefield) AS timestamp ...";

$data = array();
while($row = mysql_fetch_assoc($result)) {
   $timestamp = $row['timestamp'];
   $data[] = array($row['counts'], $row['timestamp'] * 1000);
}
echo json_encode($data);

然后您可以将这些时间戳转换为具有 JS 日期对象

var d = new Date(1327039200000);
于 2012-11-19T15:00:00.913 回答