【问题标题】:How to get MIN(date). using DAO query?如何获得 MIN(日期)。使用 DAO 查询?
【发布时间】:2020-03-30 10:56:54
【问题描述】:

我是 Android 房间数据库的新手。 我看到关于该主题有类似的问题,但我真的不明白这个主题的实际工作是什么。 所以,在这里我试图从表中获取 first date,但是当我用那个查询时

@Query("select min(date) from user_items where userId = :userId ")
long getFirstDate(long userId);

我得到的结果至少是01/01/1970 但我希望表格中的第一个日期显示给用户。

我的实体类User.java

@Entity(tableName = "users")
public class User {
    @PrimaryKey(autoGenerate = true)
    private int id;
    private String name;
    private String email;
    private String password;
    private String securityAnswer;

// other staff here
}

我的另一个实体与User 表有关系。

UserItem.java:

@Entity(tableName = "user_items", indices = {@Index("userId")}, foreignKeys = @ForeignKey(entity = User.class,
        parentColumns = "id",
        childColumns = "userId",
        onDelete = CASCADE))
public class UserItems {
    @PrimaryKey(autoGenerate = true)
    private int id;
    private String category;
    private String amount;
    private String date;

    @ColumnInfo(name = "userId")
    private int userId;


// setter and getter
}

除了min(date) 函数之外,我的其他所有查询都运行良好。

This is my entity, i want the first date as i marked, to show the user

【问题讨论】:

    标签: java android-studio android-sqlite android-room dao


    【解决方案1】:

    终于找到了解决办法: 在这里我改变我的查询
    而不是这个:

    @Query("select min(date) from user_items where userId = :userId ")
    long getFirstDate(long userId);
    

    使用这个:

    @Query("select min(date) from user_items where userId = :userId ")
    String getFirstDate(long userId);
    

    因为如果您查看我的 UserItem.java 类,我在这里将数据存储为 String 所以,如果我想将 String 存储到 long 类型,这是不允许的。

    希望对你有所帮助。

    【讨论】:

      【解决方案2】:

      查询返回 UNIX 纪元 (01/01/1970) 的开始,这表明您可能在其中一行的日期列中保留(或尝试保留)无效值。您可能需要检查日期列中的任何可疑值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-10
        • 1970-01-01
        相关资源
        最近更新 更多