【发布时间】:2014-04-23 21:17:47
【问题描述】:
我想检索那些属于今天日期的数据,我尝试了下面的事情
select * from tablename where fieldname = dateof(now());
此查询同时提供日期和系统时间,因此结果将不正确。
我怎样才能只获得当前(今天的)日期?
【问题讨论】:
我想检索那些属于今天日期的数据,我尝试了下面的事情
select * from tablename where fieldname = dateof(now());
此查询同时提供日期和系统时间,因此结果将不正确。
我怎样才能只获得当前(今天的)日期?
【问题讨论】:
根据您的问题,列族表名使用时间戳字段名作为主键。在这种情况下,每一行都由时间戳而不是日期标识,因此您无法按日期查询。
基于此,您必须更改数据模型以另一种方式定义主键。一种可能性是使用像这样创建的表:
USE test;
create table posts(username varchar,
time timeuuid,
post_text varchar,
primary key(username, time)
);
insert into posts(username, time, post_text)
values ('me', now(), 'Example');
insert into posts(username, time, post_text)
values ('me', now(), 'Example');
select username, dateOf(time), post_text from posts;
在这种情况下,您会得到两个这样的结果
因此,如果您想查询特定日期,可以使用:
选择用户名, 日期(时间), post_text 来自帖子 其中时间 >= minTimeuuid('2014-04-23 00:00') 和时间
来源:
http://cassandra.apache.org/doc/cql3/CQL.html#usingdates
http://christopher-batey.blogspot.nl/2013/05/time-series-based-queries-in-cassandra.html
【讨论】: