How to get current timestamp with CQL while using Command Line?
CassandraTimestampCqlDatastax Java-DriverCassandra Problem Overview
I am trying to insert into my CQL table from the command line. I am able to insert everything. But I am wondering if I have a timestamp column, then how can I insert into timestamp column from the command line? Basically, I want to insert current timestamp whenever I am inserting into my CQL table -
Currently, I am hardcoding the timestamp whenever I am inserting into my below CQL table -
CREATE TABLE TEST (ID TEXT, NAME TEXT, VALUE TEXT, LAST_MODIFIED_DATE TIMESTAMP, PRIMARY KEY (ID));
INSERT INTO TEST (ID, NAME, VALUE, LAST_MODIFIED_DATE) VALUES ('1', 'elephant', 'SOME_VALUE', 1382655211694);
Is there any way to get the current timestamp using some predefined functions in CQL so that while inserting into above table, I can use that method to get the current timestamp and then insert into above table?
Cassandra Solutions
Solution 1 - Cassandra
You can use the timeuuid functions now()
and dateof()
(or in later versions of Cassandra, toTimestamp()
), e.g.,
INSERT INTO TEST (ID, NAME, VALUE, LAST_MODIFIED_DATE)
VALUES ('2', 'elephant', 'SOME_VALUE', dateof(now()));
The now
function takes no arguments and generates a new unique timeuuid (at the time where the statement using it is executed). The dateOf
function takes a timeuuid argument and extracts the embedded timestamp. (Taken from the CQL documentation on timeuuid functions).
Cassandra >= 2.2.0-rc2
dateof()
was deprecated in Cassandra 2.2.0-rc2. For later versions you should replace its use with toTimestamp()
, as follows:
INSERT INTO TEST (ID, NAME, VALUE, LAST_MODIFIED_DATE)
VALUES ('2', 'elephant', 'SOME_VALUE', toTimestamp(now()));
Solution 2 - Cassandra
In new version of cassandra
could use toTimestamp(now())
, and note that function dateof
is deprecated.
e.g
insert into dummy(id, name, size, create_date) values (1, 'Eric', 12, toTimestamp(now()));
Solution 3 - Cassandra
There are actually 2 different ways for different purposes to insert the current timestamp. From the docs:
> Inserting the current timestamp
>
> Use functions to insert the current
> date into date or timestamp fields as follows:
>
> Current date and time
> into timestamp field: toTimestamp(now())
sets the timestamp to the
> current time of the coordinator.
>
> Current date (midnight) into
> timestamp field: toTimestamp(toDate(now()))
sets the timestamp to the
> current date beginning of day (midnight).