将 LocalDate 与 apache ignite 中 LocalDateTime 的日期部分进行比较

Comparing LocalDate with date part of LocalDateTime in apache ignite

我在 ignite 缓存中有一些记录,我想检索当天的所有记录。为此,我需要将缓存对象的 LocalDateTime 类型字段与 Localdate 对象进行比较,即 LocalDate.now()。我该如何编写查询来执行此操作。在 oracle 中,TODATE(date, format) 做同样的事情,但 H2 中没有这个函数。 缓存字段日期时间:2016-08-30T05:31 日期实例:2016-08-30 SQL 会像 字符串 sql = "select * from cacheName where date='convert(datetime) to date'"; H2 有可能吗?

您可以为此使用自定义 SQL 函数:https://ignite.apache.org/releases/mobile/org/apache/ignite/cache/query/annotations/QuerySqlFunction.html

例如,如果您的值 class 如下所示:

public class MyValue {
    @QuerySqlField
    private LocalDateTime time;

    public MyValue(LocalDateTime time) {
        this.time = time;
    }
}

您可以创建这样的函数:

public static class MyFunctions {
    @QuerySqlFunction
    public static String toDate(LocalDateTime time) {
        return time.format(DateTimeFormatter.ISO_LOCAL_DATE);
    }
}

并在这样的配置中提供它:

cacheCfg.setSqlFunctionClasses(MyFunctions.class);

查询将如下所示:

select * from MyValue where toDate(time) = '2016-08-30'