Umgang mit Cassandra Timestamp

Vor kurzem habe ich angefangen, cassandra und ich haben einige Probleme im Umgang mit cassandra timestamp mit cql und Java.

Unten ist mein Beispiel cassandra-Tabelle schema.

CREATE TABLE emp (
    empid int,
    create_date timestamp,
    deptid int,
    PRIMARY KEY (empid, create_date)
)

Hier sind meine Fragen unten:

1) Eigentlich brauche ich nur das Datum(ich bin nicht besorgt über Zeit), In meinem schema für die Tabelle, die ich verwendet haben, timestamp-Datentyp Ist, gibt es einen Datentyp wie Datum speichert das Datum statt timestamp.

2), Wenn es keine alternative zu timestamp-Datentyp unten ist, wie ich mich einfügen Datensatz in Tabelle manuell

Insert into emp(empId, deptId, create_date) values(1,2,'2016-03-15 00:00:00+0000');

Wenn ich versuche, die Abfrage Datensatz mit cql, wie unten

select * from emp where create_date='2016-03-15' and empid=1;

Es ist nicht die Rückgabe eines Datensatzes, so habe ich, verwenden Sie die folgende Abfrage

 select * from emp where create_date='2016-03-15 00:00:00+0000' and empid=1;

obigen Abfrage zurückgegebenen Datensatz, So, wie die Abfrage, so dass ich brauche, um die Datensätze nur mit Datum.

3) ich bin mit datastax 2.1 JAVA API zur Kommunikation zu cassandra, Unten ist mein code, wie ich bin abrufen timestamp-Spalte, die von Java.

row.getDate("create_date")

getDate-Methode ist wieder in java.util.Datum (spätere Versionen Rückkehr com.datastax.- Treiber.core.LocalDate)

Wenn ich versuche, das Datum, der code seiner Rückkehr ein Tag weniger angenommen, wenn der Datensatz in meiner Tabelle ist 2016-03-15 00:00:00+0000, aber aus meiner code-es zeigt so etwas wie 2016-03-14 EDT (ein Tag weniger ist dies wegen der timezone-Problem), Wenn Ihre Zeitzone Frage sollte ich die Zeitzone in meinem Java-code beim abrufen

4) Wenn ich Abfragen und erhalten Datensatz von meinem Java-code basierend auf empId und create_date zu machen, wie die exakte Muster wie 2016-03-15 00:00:00+0000 im Java-code, Da es nicht abrufen, wenn ich nur das Datum in der where-Bedingung, oder gibt es eine bessere Möglichkeit zum abrufen mithilfe von Java-code.

Schreibe einen Kommentar