0

我有一个以 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。因此,我不注意用户的唯一性。

任何帮助将不胜感激。

4

3 回答 3

0

我建议按照 hql 查询来满足您的要求

VisitInfo.executeQuery("select logindatetime, count(*) from VisitInfo group by logindatetime") 
于 2013-01-24T13:45:20.487 回答
0

我对grails一无所知。获取所需结果的 MySQL 查询如下:

SELECT DATE_FORMAT(logindatetime,'%d-%m-%Y') dt
     , COUNT(*) total
  FROM visitinfo
 GROUP 
    BY dt;
于 2013-01-24T13:45:59.333 回答
0

您想使用 countBy gorm 方法。

numLogins=VisitInfo.countByReleaseDateBetween(startOfDay,endOfDay)

这需要在一个循环中为过去 30 天的每一天计算两个日期对象。startOfDay 需要 00:00:00:00 的时间值,endOfDay 需要 23:59:00:00 的时间值

于 2013-01-24T13:56:49.870 回答