[英]how to count the number of dates in a table
我有一个小型的自定义博客类型网站,并且使用DB中的datetime
字段来跟踪我的帖子,该字段在输入时保存有current_timestamp
。
我正在做一个分页设置,想弄清楚数据库中有多少不重复的日子。
例如,在下面的屏幕快照中,有19
个条目,但仅在5
不同的日期输入。
我希望能够在数据库中找到唯一天数。 在以上拍摄5
。
这样,我可以按天数(例如7
天)对我的帖子进行分页,但是无论一天有更多帖子还是一天没有任何帖子,我仍然可以显示所有那几天的所有帖子。
第1页的EX,显示发布的前7天:
1月1日+发布+发布+发布
1月3日+发布
1月4日+发布+发布
1月5日+发布
1月6日+发布+发布
1月7日+发布
1月8日+发布+发布
如何以这种方式获取数据或分页的最佳方法是什么? 谢谢
请尝试以下方法:
select count(*),date from tablename group by left(date,10)
以上查询将提供不重复天数。
这将为您提供每天的帖子数量:
select from_days(to_days(date)) day, count(*) from t
group by day
然后,您可以对记录数量(天)施加限制,以每7天分页一次:
select from_days(to_days(date)) day, count(*) from t
group by day
limit 7
现在,如果您想获取实际的帖子(我想这就是您想要的),则可以执行以下操作:
select date, file from t t1 join (
select to_days(date) day from t
group by day
order by day desc
limit 7
) t2
on to_days(t1.date) = t2.day
这将为您提供最近7天的所有帖子。 那是您要找的东西吗?
编辑:
我可能会误解或未很好地提出我的问题,但我希望所有不重复的天总数都不要算在内。 -ian
大声笑:这很容易:)
select count(distinct to_days(date)) from t
我猜你在找什么
SELECT count(*) from table group by DATE(date)
关键是要映射datetime
为date
经由DATE()
函数
更新:对不起,我没有解释您的问题。 这将返回每天的帖子数。
要获取唯一日期的编号列表,您可以执行
SELECT DISTINCT DATE(datetime) from table
要获取不重复天数,您可以使用后端语言检查其计数,也可以进行子查询,例如:
select count(*) from (select distinct date(datetime) from table) as res
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.