In SQL, I am able to do:
select getdate(), getdate() - 7
Which returns the current date as well as current date - 7 days. I want to achieve the same in Cassandra CQL. I tried:
select dateof(now())
But that does not work. It works only on insert and not in select. How can I get the same? Any help would be appreciated.
select dateof(now())
On its own, you are correct, that does not work. But if you have a table that you know only has one row (like system.local
):
aploetz@cqlsh:stackoverflow> SELECT dateof(now()) FROM system.local ;
dateof(now())
--------------------------
2015-03-26 03:18:39-0500
(1 rows)
Unfortunately, Cassandra CQL does not (yet? CASSANDRA-5505) include support for arithmetic operations, let alone date arithmetic. So subtracting 7 days from that value is something that you would have to do in your application level.
Edit 20200422
The newer syntax uses the toTimestamp()
function instead:
aploetz@cqlsh> SELECT toTimestamp(now()) FROM system.local;
system.totimestamp(system.now())
----------------------------------
2020-04-22 13:22:04.752000+0000
(1 rows)
Both syntaxes work as of 20200422.