Cassandra,如何将字段与当前日期进行比较

时间:2017-10-23 16:56:48

标签: function time cassandra

我是使用Cassandra的新手,我一直在寻找信息,但我没有完成解决疑虑。

首先我有一个.csv文件,我可以从中加载足球世界杯最后一名球员的数据。

我的csv文件具有以下结构:

Group;Team;Number;Position;Name;Day;Month;Year;Club;Liga;Captain        
A;Brasil;1;PORTERO;Jefferson;2;1;1983;Botafogo;Brasil;NO    
A;Brasil;2;DEFENSA;Dani Alves;6;5;1983;FC Barcelona;Espana;NO   
A;Brasil;3;DEFENSA;Thiago Silva (c);22;9;1984;Paris Saint-Germain;Brasil;NO

根据数据我创建了以下语句来生成我的新表:

CREATE TABLE players (
    group text,
    team text,
    number int,
    position text,
    name text,
    day int,
    month int,
    year int,
    club text,
    liga text,
    captain text,
    PRIMARY key (name)
);

这里我有第一个问题,我所做的是为每个数据,日,月和年创建一个int字段。 是否可以以格式封装这三个数据,例如DATE? 因此,对于将来的计算,不必一次只进行一次。

我想知道表中的这三个字段是否可以用日期格式封装,让我们称之为DATE或类似的东西。

这是我的第二个怀疑;例如,如果我想获得年龄较大的玩家,我一直在考虑将当前日期与我拥有的不同团队的玩家的日,月,年字段进行比较,这是问题,因为我不能在文档中找到如何执行此类查询以及如何将表中的三个数据与一些返回给我当前日期的函数进行比较。

1 个答案:

答案 0 :(得分:0)

我可以回答你的第一个问题。您可以从Cassandra 3.0开始使用DATE数据类型。

CREATE TABLE players (
    group text,
    team text,
    number int,
    position text,
    name text,
    birth_date date,
    club text,
    liga text,
    captain text,
    PRIMARY key (name)
);

示例CSV看起来像下面的代码段:

Group;Team;Number;Position;Name;Birth_Date;Year;Club;Liga;Captain
A;Brasil;1;PORTERO;Jefferson;1983-01-02;Botafogo;Brasil;NO
A;Brasil;2;DEFENSA;Dani Alves;1983-05-06;FC Barcelona;Espana;NO
A;Brasil;3;DEFENSA;Thiago Silva (c);1984-09-22;Paris Saint-Germain;Brasil;YES

您可以使用以下命令将CSV加载到表定义中:

COPY players (group, team, number, position, name, birth_date, club, liga, captain) 
FROM './players.csv'
WITH HEADER = 'true' AND DELIMITER = ';';