我有一个带有mysql数据库的 grails 应用程序作为数据源。 mysql数据库由第三方创建和维护。其中一个表'visitinfo'
包含2列,包含'userid'
和'logindatetime'
。
userid
的类型为TEXT,logindatetime的类型为“datetime”。
为了访问上面的表'visitinfo'
,我创建了一个域类'VisitInfo'并将其映射到mysql数据库表,通过该表我的grails应用程序可以轻松存储以及从数据库中检索数据。
在其中一个页面上,我需要显示过去30天的访客信息。所以基本上我正在寻找一个解决方案,以获得过去30天每天的访客数量。像这样:
21-Jan-2012 ------ 36
22-Jan-2012 ------ 85
23-Jan-2012 ------ 115
24-Jan-2012 ------ 236
etc.
另请注意,如果用户ID 'williamp'
在某一天有2个条目,则应将其计为2.因此,我不会注意用户的唯一性。
任何帮助将不胜感激。
答案 0 :(得分:0)
我建议按照hql查询来匹配您的要求
VisitInfo.executeQuery("select logindatetime, count(*) from VisitInfo group by logindatetime")
答案 1 :(得分:0)
我对grails一无所知。获取所需结果的MySQL查询如下:
SELECT DATE_FORMAT(logindatetime,'%d-%m-%Y') dt
, COUNT(*) total
FROM visitinfo
GROUP
BY dt;
答案 2 :(得分:0)
您想使用countBy gorm方法。
numLogins=VisitInfo.countByReleaseDateBetween(startOfDay,endOfDay)
这需要在一个循环中,为过去30天的每一天计算两个日期对象。 startOfDay需要时间值00:00:00:00,endOfDay需要时间值23:59:00:00