Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 每天使用grails的记录数_Mysql_Hibernate_Grails_Gorm - Fatal编程技术网

Mysql 每天使用grails的记录数

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天的访客信

我有一个grails应用程序,使用mysql数据库作为数据源。mysql数据库由第三方创建和维护。其中一个表
'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天的结果,但只有当天才会有更新的结果。