Time Functions
Since version 3.0.0-beta, the ::from:: functions (e.g. time::from::millis()) now use underscores (e.g. time::from_millis()) to better match the intent of the function and method syntax.
These functions can be used when working with and manipulating datetime values.
Many time functions take an option<datetime> in order to return certain values from a datetime such as its hours, minutes, day of the year, and so in. If no argument is present, the current datetime will be extracted and used. As such, all of the following function calls are valid and will not return an error.
time::hour(d'2024-09-04T00:32:44.107Z');
time::hour();
time::minute(d'2024-09-04T00:32:44.107Z');
time::minute();
time::yday(d'2024-09-04T00:32:44.107Z');
time::yday();
time::ceil
The time::ceil function rounds a datetime up to the next largest duration.
API DEFINITION
time::ceil(datetime, $ceiling: duration) -> datetime
The following example shows this function, and its output, when used in a RETURN statement:
LET $now = d'2024-08-30T02:22:50.231631Z';
RETURN [
time::ceil($now, 1h),
time::ceil($now, 1w)
];
Output
[
d'2024-08-30T03:00:00Z',
d'2024-09-05T00:00:00Z'
]
time::day
The time::day function extracts the day as a number from a datetime, or from the current date if no datetime argument is present.
API DEFINITION
time::day(option<datetime>) -> number
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::day(d"2021-11-01T08:30:17+00:00");
time::epoch
The time::epoch constant returns the datetime for the UNIX epoch (January 1, 1970).
RETURN time::epoch;
DEFINE FIELD since_epoch ON event COMPUTED time::now().floor(1d) - time::epoch;
CREATE ONLY event:one SET information = "Something happened";
time::floor
The time::floor function rounds a datetime down by a specific duration.
API DEFINITION
time::floor(datetime, $floor: duration) -> datetime
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::floor(d"2021-11-01T08:30:17+00:00", 1w);
The time::format function outputs a datetime as a string according to a specific format.
API DEFINITION
time::format(datetime, $format: string) -> string
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::format(d"2021-11-01T08:30:17+00:00", "%Y-%m-%d");
'2021-11-01'
View all format options
time::group
The time::group function reduces and rounds a datetime down to a particular time interval.
API DEFINITION
time::group(datetime, $group_by: 'year'|'month'|'day'|'hour'|'minute'|'second') -> datetime
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::group(d"2021-11-01T08:30:17+00:00", "year");
d'2021-01-01T00:00:00Z'
time::hour
The time::hour function extracts the hour as a number from a datetime, or from the current date if no datetime argument is present.
API DEFINITION
time::hour(option<datetime>) -> number
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::hour(d"2021-11-01T08:30:17+00:00");
time::max
The time::max function returns the greatest datetime from an array of datetimes.
API DEFINITION
time::max(array<datetime>) -> datetime
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::max([ d"1987-06-22T08:30:45Z", d"1988-06-22T08:30:45Z" ])
See also:
array::max, which extracts the greatest value from an array of valuesmath::max, which extracts the greatest number from an array of numbers
time::maximum
Available since: v2.3.0
The time::maximum constant returns the greatest possible datetime that can be used.
API DEFINITION
time::maximum -> datetime
Some examples of the constant in use:
time::maximum;
time::maximum + 1ns;
time::now() IN time::minimum..time::maximum;
Output
d'+262142-12-31T23:59:59.999Z'
"Failed to compute: \"1ns + d'+262142-12-31T23:59:59.999999999Z'\", as the operation results in an arithmetic overflow."
true
time::micros
The time::micros function extracts the microseconds as a number from a datetime, or from the current date if no datetime argument is present.
API DEFINITION
time::micros(option<datetime>) -> number
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::micros(d"1987-06-22T08:30:45Z");
time::millis
The time::millis function extracts the milliseconds as a number from a datetime, or from the current date if no datetime argument is present.
API DEFINITION
time::millis(option<datetime>) -> number
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::millis(d"1987-06-22T08:30:45Z");
time::min
The time::min function returns the least datetime from an array of datetimes.
API DEFINITION
time::min(array<datetime>) -> datetime
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::min([ d"1987-06-22T08:30:45Z", d"1988-06-22T08:30:45Z" ]);
See also:
array::min, which extracts the least value from an array of valuesmath::min, which extracts the least number from an array of numbers
time::minimum
Available since: v2.3.0
The time::minimum constant returns the least possible datetime that can be used.
API DEFINITION
time::minimum -> datetime
Some examples of the constant in use:
time::minimum;
time::now() IN time::minimum..time::maximum;
Output
d'-262143-01-01T00:00:00Z'
true
time::minute
The time::minute function extracts the minutes as a number from a datetime, or from the current date if no datetime argument is present.
API DEFINITION
time::minute(option<datetime>) -> number
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::minute(d"2021-11-01T08:30:17+00:00");
time::month
The time::month function extracts the month as a number from a datetime, or from the current date if no datetime argument is present.
API DEFINITION
time::month(option<datetime>) -> number
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::month(d"2021-11-01T08:30:17+00:00");
time::nano
The time::nanofunction returns a datetime as an integer representing the number of nanoseconds since the UNIX epoch until a datetime, or the current date if no datetime argument is present.
API DEFINITION
time::nano(option<datetime>) -> number
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::nano(d"2021-11-01T08:30:17+00:00");
time::now
The time::now function returns the current datetime as an ISO8601 timestamp.
API DEFINITION
time::now() -> datetime
time::round
The time::round function rounds a datetime up by a specific duration.
API DEFINITION
time::round(datetime, $round_to: duration) -> datetime
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::round(d"2021-11-01T08:30:17+00:00", 1w);
time::second
The time::second function extracts the second as a number from a datetime, or from the current date if no datetime argument is present.
API DEFINITION
time::second(option<datetime>) -> number
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::second(d"2021-11-01T08:30:17+00:00");
time::timezone
The time::timezone function returns the current local timezone offset in hours.
API DEFINITION
time::timezone() -> string
time::unix
The time::unix function returns a datetime as an integer representing the number of seconds since the UNIX epoch until a certain datetime, or from the current date if no datetime argument is present.
API DEFINITION
time::unix(option<datetime>) -> number
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::unix(d"2021-11-01T08:30:17+00:00");
time::wday
The time::wday function extracts the week day as a number from a datetime, or from the current date if no datetime argument is present.
API DEFINITION
time::wday(option<datetime>) -> number
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::wday(d"2021-11-01T08:30:17+00:00");
time::week
The time::week function extracts the week as a number from a datetime, or from the current date if no datetime argument is present.
API DEFINITION
time::week(option<datetime>) -> number
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::week(d"2021-11-01T08:30:17+00:00");
time::yday
The time::yday function extracts the day of the year as a number from a datetime, or from the current date if no datetime argument is present.
API DEFINITION
time::yday(option<datetime>) -> number
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::yday(d"2021-11-01T08:30:17+00:00");
time::year
The time::year function extracts the year as a number from a datetime, or from the current date if no datetime argument is present.
API DEFINITION
time::year(option<datetime>) -> number
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::year(d"2021-11-01T08:30:17+00:00");
time::is_leap_year()
The time::is_leap_year() function Checks if given datetime is a leap year.
API DEFINITION
time::is_leap_year(datetime) -> bool
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::is_leap_year();
RETURN time::is_leap_year(d"1987-06-22T08:30:45Z");
RETURN time::is_leap_year(d"1988-06-22T08:30:45Z");
RETURN d'2024-09-03T02:33:15.349397Z'.is_leap_year();
time::from_micros
The time::from_micros function calculates a datetime based on the microseconds since January 1, 1970 0:00:00 UTC.
API DEFINITION
time::from_micros(number) -> datetime
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::from_micros(1000000);
time::from_millis
The time::from_millis function calculates a datetime based on the milliseconds since January 1, 1970 0:00:00 UTC.
API DEFINITION
time::from_millis(number) -> datetime
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::from_millis(1000);
time::from_nanos
The time::from_nanos function calculates a datetime based on the nanoseconds since January 1, 1970 0:00:00 UTC.
API DEFINITION
time::from_nanos(number) -> datetime
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::from_nanos(1000000);
time::from_secs
The time::from_secs function calculates a datetime based on the seconds since January 1, 1970 0:00:00 UTC.
API DEFINITION
time::from_secs(number) -> datetime
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::from_secs(1000);
time::from_unix
The time::from_unix function calculates a datetime based on the seconds since January 1, 1970 0:00:00 UTC.
API DEFINITION
time::from_unix(number) -> datetime
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::from_unix(1000);
time::from_ulid
The time::from_ulid function calculates a datetime based on the ULID.
API DEFINITION
time::from_ulid(ulid) -> datetime
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::from_ulid("01JH5BBTK9FKTGSDXHWP5YP9TQ");
As a ULID is only precise up to the millisecond, a conversion from a ULID to a timestamp will truncate nanosecond precision.
LET $now = time::now();
[$now, time::from_ulid(rand::ulid($now))];
[
d'2026-01-29T02:07:06.494218Z',
d'2026-01-29T02:07:06.494Z'
]
time::from_uuid
The time::from_uuid function calculates a datetime based on the UUID.
API DEFINITION
time::from_uuid(uuid) -> datetime
The following example shows this function, and its output, when used in a RETURN statement:
RETURN time::from_uuid(u'01944ab6-c1e5-7760-ab6a-127d37eb1b94');
As a UUID is only precise up to the millisecond, a conversion from a UUID to a timestamp will truncate nanosecond precision.
LET $now = time::now();
[$now, time::from_uuid(rand::uuid($now))];
[
d'2026-01-29T02:12:13.848476Z',
d'2026-01-29T02:12:13.848Z'
]
time::set_year
Available since: v3.0.2
The time::set_year function sets the year value of a datetime.
API DEFINITION
time::set_year(datetime, $year: integer) -> datetime
Example:
d'1970-01-01T00:00:00.500000005Z'.set_year(2026);
d'2026-01-01T00:00:00.500000000Z'
time::set_month
Available since: v3.0.2
The time::set_month function sets the month value of a datetime.
API DEFINITION
time::set_month(datetime, $month: integer) -> datetime
Example:
d'1970-01-01T00:00:00.500000005Z'.set_month(9);
d'1970-09-01T00:00:00.500000005Z'
time::set_day
Available since: v3.0.2
The time::set_day function sets the day value of a datetime.
API DEFINITION
time::set_day(datetime, $day: integer) -> datetime
Example:
d'1970-01-01T00:00:00.500000005Z'.set_day(10);
d'1970-01-10T00:00:00.500000005Z'
time::set_hour
Available since: v3.0.2
The time::set_hour function sets the hour value of a datetime.
API DEFINITION
time::set_hour(datetime, $hour: integer) -> datetime
Example:
d'1970-01-01T00:00:00.500000005Z'.set_hour(10);
d'1970-01-01T10:00:00.500000005Z'
time::set_minute
Available since: v3.0.2
The time::set_minute function sets the minute value of a datetime.
API DEFINITION
time::set_minute(datetime, $minute: integer) -> datetime
Example:
d'1970-01-01T10:00:00.500000005Z'.set_minute(55);
d'1970-01-01T10:55:00.500000005Z'
time::set_second
Available since: v3.0.2
The time::set_second function sets the second value of a datetime.
API DEFINITION
time::set_second(datetime, $second: integer) -> datetime
Example:
d'1970-01-01T10:00:00.500000005Z'.set_second(30);
d'1970-01-01T10:00:30.500000005Z'
time::set_nanosecond
Available since: v3.0.2
The time::set_nanosecond function sets the nanosecond value of a datetime.
API DEFINITION
time::set_nanosecond(datetime, $nanosecond: integer) -> datetime
Example:
d'1970-01-01T10:00:00.500000005Z'.set_nanosecond(3535);
d'1970-01-01T10:00:00.000003535Z'
Since nanoseconds are not needed in a datetime, setting the nanoseconds of a datetime to 0 can be used to make a datetime look cleaner.
d'1970-01-01T00:00:00.500000000Z'.set_nanosecond(0);
d'1970-01-01T00:00:00Z'