我想弄清楚如何查询cassandra在特定的日期与java 8 api的分钟间隔。Cassandra查询时间戳列返回没有值与Java的即时类型
例如,假设我有一个组表。
create table groups(
group_name text,
updated_on timestamp
primary key (group_name, updated_on)
);
我有表
group_name updated_on
RealGroup 2017-01-01 04:30:00-0800
RealGroup 2017-01-01 04:30:15-0800
MockGroup 2017-02-05 04:30:00-0800
我想执行一个查询到类似下面卡桑德拉内的下列记录。
select * from groups where group_name = 'RealGroup' and updated_on >= 2017 01-01 04:30:00-0800 AND <= 2017-01-01- 04:30:59-0800'
所以基本上,我想获得关于分钟间隔的数据。
我正在使用GroupAccessor和datastax api。
@Query("SELECT * FROM GROUPS WHERE GROUP_NAME = :groupName AND UPDATED_ON>= :startDate AND UPDATED_ON<= :endDate")
Result<Group> getResults(@Param("groupName") String groupName, @Param("startDate") Instant startDate, @Param("endDate") Instant endDate);
我的问题是,客户的电话会是什么样子?什么是用java 8 api发送请求的正确方法?
我正在使用以下,但它给我奇怪的结果。
LocalDateTime startDate = LocalDateTime.of(2017, Month.JANUARY, 1, 4, 30);
LocalDateTime endDate = LocalDateTime.of(2017, Month.JANUARY, 1, 4, 31);
Instant start = startDate.toInstant(ZoneOffset.UTC);
Instant end = endDate.toInstant(ZoneOffset.UTC);
Result<Group> dateGroup = groupAccessor.getResults("RealGroup", start, end);
所以实际上,上面的代码应该返回2行。
RealGroup 2017-01-01 04:30:00-0800
RealGroup 2017-01-01 04:30:15-0800
但是没有返回。
_Odd_怎么样?什么是意外? –
退货是空的。 – user1172490
代替'ZoneOffset.UTC',你想要一个'ZoneOffset'来代表你在你的CQL查询中拥有的'-0800'。 –