ORMLite如何使用两个日期列进行查询,其中一个为null或小于另一个

时间:2018-03-23 11:18:17

标签: java date ormlite

我正在使用ORMLite和H2,我有一个名为Student的数据模型,它有" updatedAt"列/属性是Date数据类型(java.util.Date),因此它也保留日期时间信息。然后是另一个名为" lastSyncedAt"的日期类型的列/属性,我想让所有学生在哪里:

  1. lastSyncedAt为空,即未同步,或
  2. lastSyncedAt小于" updatedAt"。
  3. 有人可以帮我解决如何在ORMLite上执行此操作。 LARAVEL ORM有类似的地方(columnA,比较运算符,columnB)有类似的东西,或者可以在ORMLite中执行此操作。

1 个答案:

答案 0 :(得分:1)

  

其中(columnA,比较运算符,columnB)是类似的东西,或者可以在ORMLite中执行此操作。

你有RTFM吗?关于ORMLite query builder的问题很多。你可以这样做:

qb = studentDao.queryBuilder();
where = qb.where();
where.or(
    where.isNull("lastSyncedAt"),
    where.lt("lastSyncedAt", new ColumnArg("updatedAt")));
results = queryBuilder.list();

将事情结合起来:

  • 您如何在H2中存储日期?该字段是否可以与小于?
  • 进行比较
  • H2如何处理比小于{。li>的null
  • 如果updatedAt为null
  • ,该怎么办?

第一个问题很关键。 H2具有timestamp type并且为了进行比较,日期需要以特定格式对其进行编码。取决于您如何创建架构。您也可以使用ORMlite DATE_LONG type将日期存储为长整数,当然可以进行比较。

希望这有帮助。