blob: 9d858f91821be04a5d3b15bae67d7f3ff9784a3d [file] [log] [blame]
= 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.