UPDATE
我发现了这个问题:
SELECT CONCAT(DATE(gid),'/',HOUR(gdate),':00:00 to',CONCAT(HOUR(gdate),':59:59'))作为切片,
计数(*)
来自t_table
通过...分组
DATE(gdate)
HOUR(gdate);
当8小时或一天没有数据时,它不输出零。有办法吗?
我有一个包含3个字段的表:
- gid(int)
- gdate(datetime)
- ginfo(text)
我想找到两个日期之间每天每8小时输出一个项目数(字段ginfo)的正确查询。我不确定它是否清楚,所以我可以尝试将其图式化:
第一个日期是:2013/10/01。第二个日期是: 2013/10/03。
第一天PHP输出将用于 例如:
2013/10/01 00:00-07h59:8
2013/10/01 08:00-15h59: 5
2013/10/01 16:00-23h59:7
第二天PHP输出 例如:
2013/10/01 00:00-07h59:2
2013/10/01 08:00-15h59:3
2013/10/01 16:00-23h59:1
等。
在表中,2013/10/01有20个项目。 在表格中,2013/10/02有6个项目。
我找不到正确的查询 任何人都可以帮助我吗? 请原谅我可怜的英语。
答案 0 :(得分:0)
你可以像这样使用:
SELECT COUNT(gid) FROM [table_name] WHERE (gdate>=2013/10/01 00:00) and (gdate<=2013/10/01 07:00)
UNION ALL
SELECT COUNT(gid) FROM [table_name] WHERE (gdate>=2013/10/07 00:00) and (gdate<=2013/10/01 16:00)
UNION ALL
... bla bla with your conditions
我认为格式日期不正确您可以查找格式日期。
答案 1 :(得分:0)
试试这样。
SELECT COUNT(ginfo)
FROM 'TABLE_NAME'
WHERE gdate BETWEEN 'from_date' AND 'to_date'
GROUP BY (date(gdate) + INTERVAL 8 HOUR)
答案 2 :(得分:0)
您可以尝试这样的事情
SELECT ROUND(UNIX_TIMESTAMP(`gdate`)/(480 * 60)) AS timekey,count(*),`gdate`
FROM your_table
WHERE gdate BETWEEN '2013-10-01' AND '2013-10-03'
GROUP BY timekey
您可以参考以下详细解答