$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”)。
我真的需要你的帮助......
答案 0 :(得分: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);