Mysql 每天使用grails的记录数
我有一个grails应用程序,使用mysql数据库作为数据源。mysql数据库由第三方创建和维护。其中一个表Mysql 每天使用grails的记录数,mysql,hibernate,grails,gorm,Mysql,Hibernate,Grails,Gorm,我有一个grails应用程序,使用mysql数据库作为数据源。mysql数据库由第三方创建和维护。其中一个表'visitinfo'包含两列,分别是'userid'和'loginDatime' userid的类型为TEXT,而loginDatime的类型为“datetime” 为了访问上面的表“visitinfo”,我创建了一个域类“visitinfo”,并将其映射到mysql数据库表,通过该表,我的grails应用程序可以轻松地存储和检索数据库中的数据 在其中一页上,我需要显示过去30天的访客信
'visitinfo'
包含两列,分别是'userid'
和'loginDatime'
userid
的类型为TEXT,而loginDatime的类型为“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。所以,我不是在寻找用户的独特性
任何帮助都将不胜感激。我建议您按照hql查询来满足您的要求
VisitInfo.executeQuery("select logindatetime, count(*) from VisitInfo group by logindatetime")
我对圣杯一无所知。获取所需结果的MySQL查询如下:
SELECT DATE_FORMAT(logindatetime,'%d-%m-%Y') dt
, COUNT(*) total
FROM visitinfo
GROUP
BY dt;
您想使用countBy gorm方法
numLogins=VisitInfo.countByReleaseDateBetween(startOfDay,endOfDay)
这需要在一个循环中,为过去30天中的每一天计算两个日期对象。startOfDay需要00:00:00:00的时间值,endOfDay需要23:59:00:00的时间值应该是
按LoginDatime分组
,因为LoginDatime列的类型是datetime,如果我使用group by LOGINDATIME,it会根据非常小的粒度级别(如秒)进行分组,这取决于表中的条目数……一个常见的问题是在过去30天的每一天进行交互,并在特定的一天执行查询。最后总结每天确定的计数。e、 g.VisitInfo.executeQuery(“从VisitInfo中选择count(userid),其中longdatetiem介于和之间”)@hitty5:无法多次访问数据库,因为它位于远程框中,并且性能较慢。必须在一次调用中发挥最大的作用。VisitInfo.executeQuery(“按天(LoginDaTime)、月(LoginDaTime)、年(LoginDaTime)、按天(LoginDaTime)、月(LoginDaTime)、年(LoginDaTime)从VisitInfo组中计数(userid)”;也许这个问题符合你的需要。您必须使用where子句限制时间优先级,并对结果进行排序。好的,谢谢您的回复。但我一直在寻找grails解决方案。谢谢您的回复。由于我的数据库位于远程计算机上(与grails应用程序不在同一个框中),因此调用上述方法30次会给我超过一分钟的响应时间,这是目前无法接受的。您知道一种解决方案吗?我可以调用一个数据库并以列表的形式获取信息?我不知道一次调用就可以实现这一点。虽然您可以缓存前29天的结果,但只有当天才会有更新的结果。