我有一个SQL查询,我需要从过去48小时开始计算。
sql查询
SELECT count(*), created
AS countMeta
FROM mimesi_indexer.meta_served_clips
GROUP BY created > DATE(NOW() - INTERVAL 48 HOUR)
我尝试了这个查询,但它不起作用,有人可以告诉我如何解决它或如何从头开始吗?
由于
答案 0 :(得分:1)
如果created
是时间戳字段,并且您想要计算过去48小时内创建的所有行,则应将查询编写为:
select
count(*) AS countMeta
from
mimesi_indexer.meta_served_clips
where
created > NOW() - INTERVAL 48 HOUR
如果您想显示过去48小时内每小时的计数,可以采用以下方法:
select
date_format(created, '%Y/%m/%d %h') as day_hour_created,
count(*)
from
mimesi_indexer.meta_served_clips
where
created > NOW() - INTERVAL 48 HOUR
group by
date_format(created, '%Y/%m/%d %h')
使用字符串函数date_format
,我们只能从created
字段中提取日期和小时信息,并按此字符串分组。那么你可能还想改变条件
created > NOW() - INTERVAL 48 HOUR
到此:
created > date_format(now()- interval 48 hour, '%Y/%m/%d %h')
跳过分钟和第二部分,以使第一个小时完成。
答案 1 :(得分:0)
你应该使用mysql DATE_SUB()
代替DATE()
函数来获取最近48小时的记录
SELECT count(*), created
AS countMeta
FROM mimesi_indexer.meta_served_clips
GROUP BY created > DATE_SUB(now(), INTERVAL 48 HOUR)