在Apache中点击LocalDate与LocalDateTime的日期部分

时间:2016-08-30 00:10:59

标签: date datetime h2 ignite

我在点燃缓存中有一些记录,我想检索当天的所有记录。为此,我需要将缓存对象的LocalDateTime类型字段与Localdate对象(即LocalDate.now())进行比较。如何编写查询来执行此操作。在oracle中,TODATE(日期,格式)执行相同的操作,但在H2中不存在此功能。 缓存字段日期时间:2016-08-30T05:31 日期实例:2016-08-30 SQL就像 String sql =" select * from cacheName where date =' convert(datetime)to date'&#34 ;; 在H2中有可能吗?

1 个答案:

答案 0 :(得分:3)

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

例如,如果您的值类看起来像这样:

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'