不幸的是,当涉及到SQL时,我并不是很强大,而在解释自己时并不是很强。我会尽我所能,希望有人可以提供帮助。
我有一个名为soc_stat的表,它有很多列。其中一个是“timestamp”,它只是一个时间戳,另一个是date_of_post,它只是时间戳的date_format();
,看起来像这样(例子)2015-08-28 00:18:52 < / p>
我希望这样做会产生一个返回每天/每小时的条目数量的查询
这个例子的内容
2015-08-28 00:01:00 = 218 entries
2015-08-28 00:02:00 = 327 entries
2015-08-28 00:03:00 = 487 entries
2015-08-28 00:04:00 = 118 entries
我需要它来制作图表。
我目前使用以下代码从我的数据库中获取最近24小时
SELECT * FROM `soc_stat` WHERE soc_stat.date_of_post > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
修改的
非常感谢你的回答。他们的工作方式与我想要的信息完全一样。但是我还有一个问题。如果现在如果在一小时或一天内没有输入,则不会返回任何内容。是否可以获得0返回?我的图表取决于我从SQL查询中获得的值。因此,如果我想要24小时图表,如果没有输入则不会显示几个小时。
答案 0 :(得分:2)
这是每天和每小时
SELECT date(soc_stat.date_of_post) as date,hour(soc_stat.date_of_post) as hour,
count(*) FROM `soc_stat`
WHERE soc_stat.date_of_post > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
group by date(soc_stat.date_of_post),hour(soc_stat.date_of_post)
答案 1 :(得分:2)
尝试:
SELECT date(t.date_of_post) AS date,
hour(t.date_of_post) as hour,
count(*) as entries
FROM `soc_stat` t
WHERE t.date_of_post > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
GROUP BY date(t.date_of_post), hour(t.date_of_post)
OR:
SELECT DATE_ADD(date(t.date_of_post), INTERVAL hour(t.date_of_post) HOUR) AS dateTime,
count(*) as entries
FROM `soc_stat` t
WHERE t.date_of_post > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
GROUP BY date(t.date_of_post), hour(t.date_of_post)
答案 2 :(得分:0)
尝试以下查询:
SELECT date(t.date_of_post) AS date,
hour(t.date_of_post) as hour,
count(*) as entries
FROM `soc_stat` t
WHERE t.date_of_post > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
GROUP BY date(t.date_of_post), hour(t.date_of_post)