Wie in der Abbildung gezeigt, gibt die Abfrage mit exakter Zeitmarke (2013-08-01 15:02:56) kein Ergebnis zurück, obwohl eine Zeile mit diesem Zeitstempel existiert, aber Ergebnisse mit dieser Zeile liefert, wenn nach
abgefragt wird
timestamps > '2013-08-01 15:02:56'
Ist das in Cassandra normal?
Ja, das ist das erwartete Verhalten.
Laut den Cassandra-Dokumenten und hier hier , cassandra speichert Zeitstempel als "Millisekunden seit der Standard-Basiszeit, die als Epoche bekannt ist".
Wenn Sie Ihre Daten einfügen, fügen Sie einen Millisekunden-Wert mit höherer Granularität als Ihr "2013-08-01 15:02:56" (Millisekundenwert von "jetzt" gegenüber nur Sekunden und 0 Millisekunden) ein. Ein EQ-Operator wird niemals übereinstimmen, sofern der eingefügte Zeitstempel keine 0 Millisekunden hat.
Das wird funktionieren
%Vor%Wenn Sie also cqlsh abfragen, wird Ihre datetime in eine Ganzzahl (Millisekunden) übersetzt, die sich nur von dem Wert unterscheidet, den Sie ursprünglich eingefügt haben. Ihr eingegebener Wert wird einige Millisekunden NACH "2013-08-01 15:02:56" sein. Sie fragen nach GENAU "2013-08-01 15:02:56" (und 0 Millisekunden). Die Verwendung eines GT- oder LT-Operators wird übereinstimmen, ein EQ-Operator nicht.
Hoffe das hilft!
Wie omnibear sagte ich denke, Ihr Problem ist, dass der Zeitstempel mit Millisekunden & gt; 0 gespeichert wird.
Um zu sehen, dass die nächste Abfrage gestartet wird:
%Vor%Überprüfen Sie dann die letzten Zahlen, die die Millisekunden sind.
Wenn die letzten Zahlen & gt; 0 sind (was ich erwarte), erklärt dies, warum Ihre = Behauptung falsch ist.
Sie haben also zwei Möglichkeiten:
... gib mir Ereignisse nach 15:02:56, aber vor 15:02:57:
%Vor%