【问题标题】:How do I only save date and not datetime in google datasource如何在谷歌数据源中只保存日期而不是日期时间
【发布时间】:2014-12-23 17:43:08
【问题描述】:

我正在开发一个以 gae 作为后端的 Android 应用程序。我有两个关于 DateTime 对象 com.google.gdata.data.DateTime

的查询
  1. 在插入数据时,我只想插入日期而不是日期时间。这是当前的对象创建,它保存了日期和时间。

    stock.setDate(new DateTime(new Date()));
    
  2. 此外,在检索股票对象时,我已经聚合了数据,我想按日期而不是日期时间分组。但是随着数据以日期和时间的形式存储,我将按日期时间分组,我想要日期。在这种情况下该怎么做(是的,如果我们解决第一个问题,这将不是必需的,否则应该怎么做)。我的检索码是

    List<AggregatedStock> execute = null;
    
    PersistenceManager pm = getPersistenceManager();
    Query query = pm
            .newQuery(" select date, vehicleCode, vehicleSubCode, colorCode, sum(count) from Stock as AggregatedStock ");
    
    query.setFilter(" updatedByDealer == " + dealer);
    query.setGrouping(" date, vehicleCode, vehicleSubCode, colorCode ");
    query.setOrdering(" vehicleCode desc ");
    
    query.declareImports("import com.sandeepapplabs.dms.Stock");
    
    try {
        List<Object[]> results = (List<Object[]>) query.execute();
    
        execute = new ArrayList<AggregatedStock>();
    
        for (Object[] result : results) {
            execute.add(new AggregatedStock((Date) result[0],
                    (String) result[1], (String) result[2],
                    (String) result[3], ((Long) result[4]).intValue()));
        }
    
    } finally {
        pm.close();
    }
    
    return execute;
    

【问题讨论】:

  • 有些人不假思索地投了反对票。不要难过。欢迎加入社区!
  • 有时一个问题被否决了,因为它的作者懒得去搜索数百个预先存在的重复问题和答案。
  • @BasilBourque:在这种情况下,向 成员解释为什么某个问题被否决是有用的(并且是礼貌的)。

标签: android google-app-engine datetime


【解决方案1】:

Date 是一个单一的时刻。这不是持续 24 小时的“一天”。当您拨打new Date() 时,您每次都会得到不同的时刻——低至一毫秒。请注意,这里的 Date 和 DateTime 之间没有区别 - DateTime 只是一个带有年表的 Date。

如果您想使用“日期为一天”来对您的实体进行分组,您有以下三种选择:

(a) 始终将日期设置为午夜 (how to create a Java Date object of midnight today and midnight tomorrow?)。

(b) 将其另存为new Date(),但提取“天”部分或将其转换为格式化为表示日历日的字符串,然后再将其用于对实体进行分组。

(c) 将日期存储和使用为字符串值(即“2014-12-24”)。

【讨论】:

    【解决方案2】:

    App Engine 支持将java.util.Date 作为属性。可以找到支持的值类型的完整列表here

    【讨论】:

    • 是的,但是当我生成云端点库时,它会创建日期为 DateTime 的模型类。来自生成模型的样本@SuppressWarnings("javadoc") public final class Stock extends com.google.api.client.json.GenericJson { /** * The value may be {@code null}. */ @com.google.api.client.util.Key private com.google.api.client.util.DateTime date;
    • 为什么要投反对票?我是新手,所以请告诉我,以便我最终改进
    猜你喜欢
    • 1970-01-01
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多