将 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'
我在 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'