Declarative Objectivity (DO) Language : Operator Expressions : Arithmetic Operators
Arithmetic Operators
Arithmetic operators produce values as the result of arithmetic calculations on numeric or date-time operands.
Operator
Description
Usage
First Operand
(op1)
Second Operand
(op2)
Result Type1
+
Unary plus
+op1
Numeric
Numeric
-
Unary minus
-op1
Numeric
Numeric
*
MULTIPLY
Multiplication
op1 * op2
op1 MULTIPLY op2
MULTIPLY(op1, op2)
Numeric
Numeric
Numeric
/
DIVIDE
Division
op1 / op2
op1 DIVIDE op2
DIVIDE(op1, op2)
Numeric
Numeric
Numeric
%
MODULO
Modulus
(remainder)
op1 % op2
op1 MODULO op2
MODULO(op1, op2)
Integer
Integer
Integer
+
PLUS
Addition
op1 + op2
op1 PLUS op2
PLUS(op1, op2)
Numeric
Numeric
Numeric
Date, Time, DateTime, Interval
 
Same as op1
-
MINUS
Subtraction
op1 - op2
op1 MINUS op2
MINUS(op1, op2)
Numeric
Numeric
Numeric
Date, Time, DateTime, Interval
Same as op1
Date, Time, DateTime
Same as op1
Interval
IS_NAN
Checks for an undefined number; returns true if found.
IS_NAN(op1)
Real (floating-point) number
Boolean
IS_INF
Checks for an infinite number; returns true if found.
IS_INF(op1)
Real (floating-point) number
Boolean
1. The arithmetic operators return null if either operand is a null value.
Quick Look 
Update the luxury vehicle category by changing its rate to $20 less than double the current rate:
UPDATE VehicleCategory WHERE name == 'Luxury' SET rate TO rate * 2 - 20 RETURN rate;
Return the interval (number of days, hours, minutes, etc.) between a particular reservation’s timestamp and the given datetime (March 30, 2017 at 12:00 a.m. UTC):
FROM Reservation WHERE $$ID == 3-3-2-82 RETURN timestamp - 2017-3-30 00:00:00Z;
Return the date and time that is 5 days and 8 hours earlier than a particular reservation’s timestamp:
FROM Reservation WHERE $$ID == 3-3-2-82 RETURN timestamp - INTERVAL{days:5, hours:8};
Operator expression that evaluates to true if the value of the real (floating-point) attribute myFloat is not a number:
IS_NAN(myFloat)
Discussion 
For general information about operator formats, operands, and precedence, see About Operator Expressions.
When performing arithmetic operations on datetimes, the two datetime values may be expressed in different time zones; the operator automatically converts them to the same time zone.
Implicit Type Coercion of Numeric Operands
For numeric arithmetic operators, implicit type coercion is performed on the operands. In a mixed-type numeric expression, the following precedence of data types is used (lowest to highest):
The value of the operand of the lower type is promoted to that of the higher type and the result is an expression of the higher type. For example, an integer multiplied by a floating-point number returns a floating-point number.
Arithmetic Operations on Dates, Times, and Datetimes
You can use the PLUS operator to return a date, time, or datetime that is later by an amount of time expressed as an interval. Similarly, you can use the MINUS operator to return a date, time, or datetime that is later by an amount of time expressed as an interval.
Example. The following statement returns the date and time that is 5 days and 8 hours later than a particular reservation’s timestamp:
FROM Reservation WHERE $$ID == 3-3-2-82 RETURN timestamp + INTERVAL{days:5, hours:8};
You can use the MINUS operator to return the amount of time (expressed as an interval) between two dates, two times, or two datetimes. If the two operands are datetime values that are expressed in different time zones, they are automatically converted to the same time zone before the subtraction is performed.
Example. The following statement returns the interval (number of days, hours, minutes, etc.) between a particular reservation’s timestamp and the given datetime (March 30, 2017 at 12:00 a.m. UTC). If the value of timestamp is expressed in the local time standard, that value is implicitly converted to the UTC time standard before the difference is computed:
FROM Reservation WHERE $$ID == 3-3-2-82 RETURN timestamp - 2017-3-30 00:00:00Z;