CQL supports the following operators:
| Operator | Description |
|---|---|
| - (unary) | Negates operand |
| + | Addition |
| - | Substraction |
| * | Multiplication |
| / | Division |
| % | Returns the remainder of a division |
All arithmetic operations are supported on numeric types or counters.
The return type of the operation will be based on the operand types:
| left/right | tinyint | smallint | int | bigint | counter | float | double | varint | decimal |
|---|---|---|---|---|---|---|---|---|---|
| tinyint | tinyint | smallint | int | bigint | bigint | float | double | varint | decimal |
| smallint | smallint | smallint | int | bigint | bigint | float | double | varint | decimal |
| int | int | int | int | bigint | bigint | float | double | varint | decimal |
| bigint | bigint | bigint | bigint | bigint | bigint | double | double | varint | decimal |
| counter | bigint | bigint | bigint | bigint | bigint | double | double | varint | decimal |
| float | float | float | float | double | double | float | double | decimal | decimal |
| double | double | double | double | double | double | double | double | decimal | decimal |
| varint | varint | varint | varint | decimal | decimal | decimal | decimal | decimal | decimal |
| decimal | decimal | decimal | decimal | decimal | decimal | decimal | decimal | decimal | decimal |
*, / and % operators have a higher precedence level than + and - operator. By consequence,
they will be evaluated before. If two operator in an expression have the same precedence level, they will be evaluated
left to right based on their position in the expression.
A duration can be added (+) or substracted (-) from a timestamp or a date to create a new
timestamp or date. So for instance:
SELECT * FROM myTable WHERE t = '2017-01-01' - 2d
will select all the records with a value of t which is in the last 2 days of 2016.