【发布时间】:2015-03-06 19:37:24
【问题描述】:
我正在显示我的 mySQL 表中的一些数据库用户统计信息。我想按周对数据进行分组,这样我就可以从周一到周日每周都有单独的表格。数据库中的日期存储为 YYYY-MM-DD。
目前我有以下 PHP 来访问数据:
try {
$sql = "SELECT *
FROM metric
WHERE userid='".$tuserid."';";
$result = $pdo->query($sql);
}
catch (PDOException $e) {
$error = $e->getMessage();
include $errorpage;
exit();
}
while ($row = $result->fetch()) {
$metrics[] = array(
'id' => $row['id'],
'date' => $row['date'],
'value1' => $row['value1'],
'value2' => $row['value2'],
'value3' => $row['value3'],
'value4' => $row['value4']
);
}
然后我用这个输出它:
<table border="1" cellpadding="2px">
<thead>
<tr>
<th bgcolor="#CECECE">Date</th>
<th bgcolor="#CECECE">Candidates Added</th>
<th bgcolor="#CECECE">Candidates Edited</th>
<th bgcolor="#CECECE">Notes Added</th>
<th bgcolor="#CECECE">Candidates Forwarded</th>
</tr>
</thead>
<tbody>
<?php
for ($i=0;$i<count($metrics);$i++){
?>
<tr>
<td><center><?php echo $metrics[$i]['date'] ?></center></td>
<td><center><?php echo $metrics[$i]['value1'] ?></center></td>
<td><center><?php echo $metrics[$i]['value2'] ?></center></td>
<td><center><?php echo $metrics[$i]['value3'] ?></center></td>
<td><center><?php echo $metrics[$i]['value4'] ?></center></td>
</tr>
<?php
}
?>
</tbody>
</table>
这是一个输出示例:
如何将数据分成从星期一到星期日的周数?
【问题讨论】:
-
你可以
GROUP BY WEEK(Date,1)。 (如有必要,首先从字符串转换日期)。查看WEEK() 函数,并确保您使用正确的模式(第二个参数),否则您的年终处理可能不是您想要的。 -
MySQL 中日期列的列类型是什么?如果它不是本机日期类型,则可以使用 STR_TO_DATE 将存储的值转换为可以操作的值。您也可以在 PHP 端使用 $day_of_week = date('N', strtotime($metrics[$i]['date']) ); // 1 = 周一至 7 = 周日