所以我有一个MySQL查询加入一个数组来清理它以满足图形库的需要。我试图将目前采用24小时格式的小时转换为稍微漂亮的12小时格式。但是当我这样做时,它会在一次迭代后杀死循环,因此只有一个值被输入到图形中(而不是整天的值)。我是PHP的新手,所以我不确定是什么打破了这一点。完成我需要做的事情的正确方法是什么?
$data = $conn->query('SELECT HOUR( TIMESTAMP ) AS HOUR , COUNT( DISTINCT detected_key ) AS num_rows
FROM Visitors
WHERE TIMESTAMP >= NOW( ) - INTERVAL 1 DAY
GROUP BY HOUR( TIMESTAMP )
ORDER BY `id` ASC
LIMIT 0 , 24');
while($row = $data->fetch(PDO::FETCH_ASSOC)) {
$prettytime = DATE("g:i a", STRTOTIME($row['HOUR']));
$visit[$prettytime]= $row['num_rows'];
}
编辑:我尝试使用DATE_FORMAT,但仍然只是输出为24h格式。我在MySQL网站上找到的唯一文档总是在SELECT之后立即使用。
SELECT DATE_FORMAT( TIMESTAMP, "%l:%i %a" ) , HOUR( TIMESTAMP ) AS HOUR , COUNT( DISTINCT detected_key ) AS num_rows
FROM Visitors
WHERE TIMESTAMP >= NOW( ) - INTERVAL 1 DAY
GROUP BY HOUR( TIMESTAMP )
ORDER BY `id` ASC
LIMIT 0 , 24
以下是the website,您可以在其中查看图表。使用上述查询的是左上图。
答案 0 :(得分:1)
这似乎从定义为
的数据库字段中可以很好地工作`thetime` timestamp NULL DEFAULT CURRENT_TIMESTAMP
然后使用MySQL DATE_FORMAT()和HOUR()函数: -
SELECT thetime, DATE_FORMAT(thetime, '%r') from test_table
给出结果: -
2014-01-20 10:57:45, 10:57:45 AM
2014-01-20 23:59:31, 11:59:31 PM
或者
SELECT thetime, HOUR(DATE_FORMAT(thetime, '%r')) from test_table
给予: -
2014-01-20 10:57:45, 10
2014-01-20 23:59:31, 11