| = Arithmetic Operators |
| |
| CQL supports the following operators: |
| |
| [cols=",",options="header",] |
| |=== |
| |Operator |Description |
| |
| | - (unary) | Negates operand |
| |
| | + | Addition |
| |
| | - | Substraction |
| |
| | * | Multiplication |
| |
| | / | Division |
| |
| | % | Returns the remainder of a division |
| |=== |
| |
| == Number Arithmetic |
| |
| All arithmetic operations are supported on numeric types or counters. |
| |
| The return type of the operation will be based on the operand types: |
| |
| [cols=",,,,,,,,,",options="header",] |
| |=== |
| |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. |
| |
| [[datetime--arithmetic]] |
| == Datetime Arithmetic |
| |
| A `duration` can be added (+) or substracted (-) from a `timestamp` or a |
| `date` to create a new `timestamp` or `date`. So for instance: |
| |
| [source,cql] |
| ---- |
| include::example$CQL/datetime_arithmetic.cql[] |
| ---- |
| |
| will select all the records with a value of `t` which is in the last 2 |
| days of 2016. |