java - 查询今天、一周内、一个月内

标签 java google-app-engine

我是新人。我正在为激光标记场所编写一个应用程序,在那里我们有很多年龄段的 child 来互相射击光束。我们正在制作一个高分屏幕,它将显示当天、一周和本月的最佳分数。我们的想法是,人们会为上榜而感到自豪,并且每月还会有一次奖励。

我陷入了按日期过滤的整个过程中。

我基本上修改了经典的留言簿示例,以便我可以添加分数和客户信息,并按分数对它们进行排序。

    Key guestbookKey = KeyFactory.createKey("Guestbook", guestbookName);
    String fornavn = req.getParameter("fornavn");
    Integer score = Integer.parseInt(req.getParameter("score"));
    String email = req.getParameter("email");
    String tlf = req.getParameter("tlf");
    Date date = new Date();
    Entity highscore = new Entity("Greeting", guestbookKey);
    highscore.setProperty("date", date);
    highscore.setProperty("fornavn", fornavn);
    highscore.setProperty("score", score);
    highscore.setProperty("email", email);
    highscore.setProperty("tlf", tlf);

    DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
    datastore.put(highscore);

在 jsp 中,有一个查询可以获取整体前 5 名。

Query query = new Query("Highscore", highscoreKey).addSort("score", Query.SortDirection.DESCENDING);
List<Entity> greetings = datastore.prepare(query).asList(FetchOptions.Builder.withLimit(5));

还有一个表单将用户输入发送到 .java。关于如何设置日期有什么建议吗?保存第 # 周和第 # 月并据此进行查询?看起来很麻烦。

最佳答案

据我所知,您的“HighScore”类型实际上是一种跟踪所有分数的“Score”类型。

与其查询周/月的高分,您可能最好拥有一个 HighScore 实体(与正常的“分数”实体分开),每当您输入分数时就更新该实体。每次输入新分数时,检查是否应更新高分。

您永远不需要花哨的查询,您只需要获取高分实体。

或者您可能想要每月/每周等有一个单独的高分实体,以便您可以跟踪历史记录。在这种情况下,您可能需要将周或月编码到实体键中,以便您可以轻松获取当前周/月的 HighScore。

关于java - 查询今天、一周内、一个月内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17553962/

相关文章:

java - 如何将数组索引映射到特定日期?

java - 如何在Java运行时动态创建对象

python - 通过谷歌应用引擎中的 get 发送多变量字典; Python

java - 按键排序 - 对象化

google-app-engine - 在谷歌云 SQL 中更改全局隔离级别

Python 函数告诉我当我只发送一个参数时我发送了两个参数

java - 从文件读取数据到 JCombobox

java - 如何迭代并从 session 中获取所有用户名

python - 获取 Google App Engine 中的所有域用户

Java 通用问题