如何计算表中的日期数

时间:2012-03-16 02:28:35

标签: php mysql pagination

我有一个小型的自定义博客类型网站,我会在数据库中的datetime字段跟踪我的帖子,该字段在输入时会显示current_timestamp

我正在进行分页设置,想知道我的数据库中有多少天。

例如,在下面的屏幕截图中,有19个条目,但仅在5个不同日期输入。

date times screenshot

我希望能够在数据库中找到唯一天数。在上面的镜头中5

通过这种方式,我可以按天数分组我的帖子,比如7,但仍会显示所有这些日子的所有帖子,无论有一天有更多帖子还是有一天没有。

第1页的EX显示了帖子的前7天:

1月1日     +岗位     +岗位     +交

1月3日     +交

1月4日     +岗位     +交

1月5日     +交

1月6日     +岗位     +交

1月7日     +交

1月8日     +岗位     +交

以这种方式获取此数据或分页的最佳方法是什么? 感谢

3 个答案:

答案 0 :(得分:1)

尝试以下:

select count(*),date from tablename group by left(date,10)

以上查询将给出唯一天数。

答案 1 :(得分:0)

这将为您提供每日的帖子数量:

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天的所有帖子。这就是你在寻找的地方吗?

修改

  

我可能会误解或者没有很好地提出我的问题,但是我想要所有完全独特日子的数量而不是帖子。 - 伊恩

LOL:这更容易:)

select count(distinct to_days(date)) from t

答案 2 :(得分:0)

我想你要找的是

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