我试图为过去7天显示“热门产品”。我如何从时间戳日期范围?
我的数据库为product_views
,有以下3个领域:
product_id
,IP
,ViewStamp
印记类型是timestamp
默认值是CURRENT_TIMESTAMP
。因此,他们被格式化,像这样:2014-02-02 22:24:54
。
我如何组product_id
具有最多的行/数天的给定范围内?我似乎无法得到这个查询,甚至远程正确。
谢谢你的帮助。我希望我解释得很好。
我试图为过去7天显示“热门产品”。我如何从时间戳日期范围?
我的数据库为product_views
,有以下3个领域:
product_id
,IP
,ViewStamp
印记类型是timestamp
默认值是CURRENT_TIMESTAMP
。因此,他们被格式化,像这样:2014-02-02 22:24:54
。
我如何组product_id
具有最多的行/数天的给定范围内?我似乎无法得到这个查询,甚至远程正确。
谢谢你的帮助。我希望我解释得很好。
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
什么是您使用SQL引擎?显示的东西,任何东西.. – Mark
如果你设置一个sqlfiddle,那么人们会更容易帮助你,我想你正在寻找一个'GROUP BY product_id HAVING ViewStamp BETWEEN XXXX AND XXXX',但没有关于什么sql服务器等的细节我无法证实这一点。在非功能性笔记,它通常是有意义的保持一致的命名约定您的下划线between_words或WordCapitalisation – Anigel
列对不起,我是新来这个。这是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