2014-02-17 10 views
2

我试图为过去7天显示“热门产品”。我如何从时间戳日期范围?

我的数据库为product_views,有以下3个领域:

product_idIPViewStamp

印记类型是timestamp默认值是CURRENT_TIMESTAMP。因此,他们被格式化,像这样:2014-02-02 22:24:54

我如何组product_id具有最多的行/数天的给定范围内?我似乎无法得到这个查询,甚至远程正确。

谢谢你的帮助。我希望我解释得很好。

+0

什么是您使用SQL引擎?显示的东西,任何东西.. – Mark

+0

如果你设置一个sqlfiddle,那么人们会更容易帮助你,我想你正在寻找一个'GROUP BY product_id HAVING ViewStamp BETWEEN XXXX AND XXXX',但没有关于什么sql服务器等的细节我无法证实这一点。在非功能性笔记,它通常是有意义的保持一致的命名约定您的下划线between_words或WordCapitalisation – Anigel

+1

列对不起,我是新来这个。这是phpMyAdmin的说:服务器:通过UNIX套接字 服务器输入localhost:MySQL的 Server版本:72年5月1日-CLL - MySQL社区服务器(GPL第二版) 协议版本:10 用户:根@本地 服务器的字符集:UTF- 8个Unicode(UTF-8) Web服务器 cpsrvd 11.40.1.11 数据库客户端版本的libmysql - 5.0.96 PHP扩展:mysqli的文档 – Mike

回答

0
SELECT product_id, COUNT(1) as c 
FROM product_views 
WHERE ViewStamp BETWEEN '2014-02-02 22:24:54' AND '2014-10-02 22:24:54' 
GROUP BY product_id 
ORDER BY c DESC 
LIMIT 1 

这让你有该范围的最大计数的产品ID

编辑:

是否有可能要求SQL语句显示最近7天,而不是打字在实际范围内手动?

SELECT product_id, COUNT(1) as c 
FROM product_views 
WHERE DATEDIFF(NOW(), ViewStamp) <= 7 
GROUP BY product_id 
ORDER BY c DESC 
LIMIT 1 
+0

非常感谢您的帮助。是否有可能要求SQL显示最近7天而不是手动输入实际范围? – Mike

+0

是的,看到编辑 –

+0

非常感谢,手帕!第一个查询工作。第二个返回无效的论点。这对我来说是一个很好的开始,谢谢。 – Mike

相关问题