Zum Inhalt springen

Date and time functions

Dieser Inhalt ist noch nicht in deiner Sprache verfügbar.

These functions operate on the temporal types (TIME, LTIME, DATE, LDATE, TOD, LTOD, DT, LDT). They cover three areas: arithmetic on durations and date/time values, composing/decomposing date/time values, and reading the runtime device clock. To convert between temporal types (e.g. TIME_TO_LTIME), use the conversion functions.

FunctionParametersReturns
ADD_TIMEIN1 : TIME, IN2 : TIMETIME
ADD_LTIMEIN1 : LTIME, IN2 : LTIMELTIME
ADD_TOD_TIMEIN1 : TOD, IN2 : TIMETOD
ADD_LTOD_LTIMEIN1 : LTOD, IN2 : LTIMELTOD
ADD_DT_TIMEIN1 : DT, IN2 : TIMEDT
ADD_LDT_LTIMEIN1 : LDT, IN2 : LTIMELDT
SUB_TIMEIN1 : TIME, IN2 : TIMETIME
SUB_LTIMEIN1 : LTIME, IN2 : LTIMELTIME
SUB_DATE_DATEIN1 : DATE, IN2 : DATETIME
SUB_LDATE_LDATEIN1 : LDATE, IN2 : LDATELTIME
SUB_TOD_TIMEIN1 : TOD, IN2 : TIMETOD
SUB_LTOD_LTIMEIN1 : LTOD, IN2 : LTIMELTOD
SUB_TOD_TODIN1 : TOD, IN2 : TODTIME
SUB_LTOD_LTODIN1 : LTOD, IN2 : LTODLTIME
SUB_DT_TIMEIN1 : DT, IN2 : TIMEDT
SUB_LDT_LTIMEIN1 : LDT, IN2 : LTIMELDT
SUB_DT_DTIN1 : DT, IN2 : DTTIME
SUB_LDT_LDTIN1 : LDT, IN2 : LDTLTIME
MUL_TIMEIN1 : TIME, IN2 : ANY_NUMTIME
MUL_LTIMEIN1 : LTIME, IN2 : ANY_NUMLTIME
DIV_TIMEIN1 : TIME, IN2 : ANY_NUMTIME
DIV_LTIMEIN1 : LTIME, IN2 : ANY_NUMLTIME

The naming encodes the operand types: ADD_DT_TIME adds a TIME duration to a DT; SUB_DT_DT subtracts two DT values to yield the TIME between them.

deadline := ADD_DT_TIME(start, T#2h); // DT + duration -> DT
elapsed := SUB_DT_DT(finish, start); // DT - DT -> TIME
total := ADD_TIME(setup, run); // TIME + TIME -> TIME
doubled := MUL_TIME(base, 2); // TIME * number -> TIME
slice := DIV_TIME(period, 4); // TIME / number -> TIME
FunctionParametersReturns / outputs
CONCAT_DATE_TODIN1 : DATE, IN2 : TODDT
CONCAT_DATE_LTODIN1 : DATE, IN2 : LTODLDT
CONCAT_DATEYEAR, MONTH, DAY : ANY_INTDATE
CONCAT_TODHOUR, MINUTE, SECOND, MILLISECOND : ANY_INTTOD
CONCAT_LTODHOUR, MINUTE, SECOND, MILLISECOND : ANY_INTLTOD
CONCAT_DTYEAR, MONTH, DAY, HOUR, MINUTE, SECOND, MILLISECOND : ANY_INTDT
CONCAT_LDTYEAR, MONTH, DAY, HOUR, MINUTE, SECOND, MILLISECOND : ANY_INTLDT
SPLIT_DATEin IN : DATEout YEAR, MONTH, DAY : ANY_INT
SPLIT_TODin IN : TODout HOUR, MINUTE, SECOND, MILLISECOND : ANY_INT
SPLIT_LTODin IN : LTODout HOUR, MINUTE, SECOND, MILLISECOND : ANY_INT
SPLIT_DTin IN : DTout YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, MILLISECOND : ANY_INT
SPLIT_LDTin IN : LDTout YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, MILLISECOND : ANY_INT
DAY_OF_WEEKIN : DATEINT
CONCAT_DATE(YEAR : ANY_INT, MONTH : ANY_INT, DAY : ANY_INT) : DATE
CONCAT_DT(YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, MILLISECOND : ANY_INT) : DT
today := CONCAT_DATE(2026, 6, 8); // DATE#2026-06-08
stamp := CONCAT_DT(2026, 6, 8, 14, 30, 0, 0); // DT#2026-06-08-14:30:00
joined := CONCAT_DATE_TOD(today, TOD#08:00:00);

DAY_OF_WEEK (a logiccloud extension) returns the weekday of a DATE as an INT where Sunday = 0, Monday = 1, …, Saturday = 6.

DAY_OF_WEEK(IN : DATE) : INT
weekday := DAY_OF_WEEK(D#2026-06-08); // 1 (Monday)

These are logiccloud extensions that read the runtime device clock. All three return a DT (DATE_AND_TIME).

FunctionParametersReturnsDescription
SYS_UTC_DATE_TIME(none)DTCurrent date/time in UTC.
SYS_LOCAL_DATE_TIME(none)DTCurrent date/time in the runtime’s local time zone.
SYS_DATE_TIMETZ : STRINGDTCurrent date/time in the named time zone.

SYS_DATE_TIME takes an IANA time-zone name (e.g. 'Europe/Berlin', 'America/New_York', 'UTC').

SYS_UTC_DATE_TIME() : DT
SYS_LOCAL_DATE_TIME() : DT
SYS_DATE_TIME(TZ : STRING) : DT
nowUtc := SYS_UTC_DATE_TIME();
nowLocal := SYS_LOCAL_DATE_TIME();
nowBerlin := SYS_DATE_TIME('Europe/Berlin');