Sql Query计算相同的日期条目

Aja*_*tel 5 mysql sql

所有我想根据日期计算条目.(即具有相同日期的条目.)我的表是

在此输入图像描述 您可以看到第5和第6个条目具有相同的日期.

现在,我认为真正的问题是相同的日期条目有不同的时间,所以我没有得到我想要的.

我正在使用这个sql

SELECT COUNT( created_at ) AS entries, created_at
FROM wp_frm_items
WHERE user_id =1
GROUP BY created_at
LIMIT 0 , 30
Run Code Online (Sandbox Code Playgroud)

我得到的是这个.

在此输入图像描述

我希望2012-02-22的日期为2

Pat*_*and 12

你得到你得到的东西的原因是因为你也比较时间,相差一秒.因此,创建相同秒的任何条目将被组合在一起.

要实现您真正想要的,您需要将日期函数应用于created_at列:

SELECT COUNT(1) AS entries, DATE(created_at) as date
FROM wp_frm_items
WHERE user_id =1
GROUP BY DATE(created_at)
LIMIT 0 , 30
Run Code Online (Sandbox Code Playgroud)

这将从列字段中删除时间部分,因此将在同一天创建的任何条目组合在一起.您可以通过删除在同一年的同一月创建的分组条目等日期部分来进一步采取此操作.

要将查询限制为在当前月份中创建的条目,请WHERE在查询中添加-clause,以仅选择满足该条件的条目.这是一个例子:

SELECT COUNT(1) AS entries, DATE(created_at) as date 
FROM  wp_frm_items
WHERE user_id = 1 
  AND created_at >= DATE_FORMAT(CURDATE(),'%Y-%m-01') 
GROUP BY DATE(created_at)
Run Code Online (Sandbox Code Playgroud)

:在COUNT(1)查询的双组分只是意味着Count each row,你也可以同样写了COUNT(*),COUNT(id)或者其他任何领域.从历史上看,最有效的方法是计算主键,因为它始终可用于查询引擎可以使用的任何索引.COUNT(*)过去必须离开索引并检索表中的相应行,这有时效率低下.在更现代的查询规划器中,这可能不再是这种情况.COUNT(1)是另一种变体,它不会强制查询计划程序从表中检索行.

编辑:可以通过多种不同方式创建按月分组的查询.这是一个例子:

SELECT COUNT(1) AS entries, DATE_FORMAT(created_at,'%Y-%c') as month
FROM wp_frm_items
WHERE user_id =1
GROUP BY DATE_FORMAT(created_at,'%Y-%c')
Run Code Online (Sandbox Code Playgroud)

  • 哦,对不起,我很快.已编辑的查询按月分组,但您想要第一个查询但仅适用于当前月份? (2认同)