【问题标题】:mysql-query number of rows for each day, based on given timestampmysql-query 每天的行数,基于给定的时间戳
【发布时间】:2020-11-14 15:55:54
【问题描述】:

我有一个包含 2 列的表:idadd_timestamp。用户可以在仪表板中选择任意时间戳,然后我必须查询过去 30 天内每天添加的行数,相对于所选时间戳

例如,如果用户选择了时间戳X 作为基准,那么(时间戳以秒为单位):

day 1 是从X-1*24*60*60X

day 2 是从X-2*24*60*60X-1*24*60*60

等等。如何查询这些天(过去 30 天)的每一天的行数?

【问题讨论】:

  • 请提供样本数据和期望的结果。

标签: mysql sql select


【解决方案1】:

这是您想要的,按天聚合过滤吗?

select date(add_timestamp), count(*)
from t
where add_timestamp >= ? - interval 30 day and
      add_timestamp < ?
group by date(add_timestamp);

?是用户选择的时间戳的参数占位符。

编辑:

如果您希望根据时间戳中的 时间(即每个日期前 24 小时)进行此操作,则可以减去时间戳中的时间并提取日期:

select date(subtime(add_timestamp, time(?)) as dy, count(*)
from t
where add_timestamp >= ? - interval 30 day and
      add_timestamp < ?
group by dy;

【讨论】:

  • 感谢您的回复。不!不需要聚合,只需要每天的绝对计数
  • @Soheil 。 . .嗯?这将返回每天的计数。
  • @soheil 。 . . add_timestamp 是表中的一列。 ? 是您要比较的时间戳的参数。
  • 每条记录add_timestamp的值不同,? - interval 30 day的值不变。
  • @Soheil 。 . .它正在获取时间戳传入前 30 天的所有时间戳。
猜你喜欢
  • 2021-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
相关资源
最近更新 更多