DATE
The DATE
data type stores calendar dates with a Year/Month/Day
representation.
Syntax
DATE
Usage
Storage of DATE
variables is based on a 4 byte integer representing the number
of days since 1899-12-31 (Unix Epoch 1900-01-01 minus 1 day)
The value range is from 0001-01-01 (-693594) to 9999-12-31 (2958464) .
DATE
variables are initialized to zero (=1899-12-31) in functions, modules and
globals.
Several built-in functions and operators specific to the DATE
type
are available, such as MDY()
and TODAY
. For more
details, see Date and time operators.
Data type conversions, input and display of DATE
values are ruled by
environment settings, such as the DBDATE and DBCENTURY enviroment variables. Dates
can be formatted with the USING
operator. For more details, see
Formatting DATE values.
LET date_var = "24/12/1998" -- DBDATE dependant code
LET date_var = MDY(12,24,1998) -- Portable code
DATE
, simply use a
+
or -
arithmetic operator followed by an integer
expression representing a number of days:MAIN
DEFINE d DATE
LET d = TODAY
LET d = d + 10 -- Add 10 days
LET d = d - 20 -- Subtract 20 days
DISPLAY "d = ", d USING "yyyy-mm-dd"
END MAIN
MAIN
DEFINE d1, d2 DATE
LET d1 = MDY(12,24,1998)
LET d2 = MDY(5,11,2010)
DISPLAY "d2 - d1 = ", (d2-d1)
END MAIN
DATE
values can be converted directly from/to DATETIME
values:MAIN
DEFINE d DATE,
dt DATETIME YEAR TO FRACTION(3)
LET d = TODAY
LET dt = d; DISPLAY "dt = ", dt
LET dt = CURRENT
LET d = dt; DISPLAY "d = ", d
END MAIN
DATE
, use the
UNITS
operator:MAIN
DEFINE d0, d date
LET d0 = MDY(01, 31, 2015)
LET d = d0 + 1 UNITS MONTH; DISPLAY d
LET d = d0 - 1 UNITS MONTH; DISPLAY d
LET d = d0 - 2 UNITS MONTH; DISPLAY d
END MAIN
In fact, the UNITS
operator will produce an INTERVAL
. Then the
DATE
value is converted to a DATETIME
, to add or subtract the
INTERVAL
value. Finally the DATETIME
is converted to a
DATE
, in order to assign the result to the target variable.