我是sql的新手,我想创建一个查询,计算每天的所有文章ID。但问题是日期列还包含时间..所以我怎样才能使查询按日期分组而没有时间?
例如:
id|article_id|date (timestamp)
1|22|2014-01-10 13:30:10
1|23|2014-02-10 12:30:10
由于 晒
答案 0 :(得分:7)
试试这个:
select count(article_id) from YourTable group by date(date)
答案 1 :(得分:3)
试试这个:
select date(date), count(article_id) from YourTable group by date(date);
答案 2 :(得分:2)
$dayCount = 0;
$previousDay = "";
$query = $database->prepare('
SELECT DATE_FORMAT(date, '%d/%m/%Y') AS date FROM my_table ORDER BY date');
$query->execute();
while ($output = $query->fetch()) {
$day = $output['date'];
if($previousDay != $day)
{ $dayCount ++; }
else {
echo $dayCount;
$dayCount = 0;
}
$previousDay = $day;
}
可以在这里找到DATE_FORMAT输出:
http://dev.mysql.com/doc/refman/5.0/fr/date-and-time-functions.html
答案 3 :(得分:0)
按日期分组,没有时间=>使用以下
注意:myDateTime采用日期时间格式
GROUP BY CAST(myDateTime AS DATE)
答案 4 :(得分:0)
这将起作用
SELECT
COUNT(id),to_char(to_date('2014-01-10 13:30:10','yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd') AS date_part
FROM your_table_name
GROUP BY to_char(to_date('2014-01-10 13:30:10','yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd')
答案 5 :(得分:0)
我在比赛中太迟了。希望将来可能有所帮助。
这个
有两个解决方案您可以在GROUP BY中的日期时间戳上将DATE作为过滤器选项,如下所示
SELECT COUNT(id) as article_count, DATE(date) GROUP BY DATE(date);
您可以使用GROUP BY中的DATE()过滤SELECT列的别名
SELECT COUNT(id) as article_count, DATE(date) published_date GROUP BY published_date;
希望它有所帮助。快乐的编码!