Skip to main content

Date & Time Functions


Date and time functions operate on temporal values such as dates, timestamps, or intervals.
They are used to extract or compare time-based information, compute durations, and align values to time units.

Usage

Date and time functions are expressed using structured DQL expressions and follow specific forms based on the number of inputs:

  • $binary: for functions that take exactly two operands (e.g. difference between timestamps)
  • $variadic: for functions that require multiple operands (e.g. dateDiff)
  • $unary: not used in temporal functions

Operands must be valid expressions that evaluate to date, timestamp, or interval types. This includes:

  • column references (e.g. $identifier)
  • scalar values (e.g. ISO date strings)
  • computed expressions (e.g. nested function calls)

If a raw string is used, casting may be necessary using $cast or $shortCast.

Date and time functions expect a specific number of operands. Using too few or too many will result in a validation error.


$dateTrunc

Added in: indicate.dsl.dql@1.0.0
Date truncation functions allow rounding or truncating a date to a specified partition, such as year, month, or day.

  {
"$fn": "dateTrunc",
"$operands": [
{ object (Expression) },
{ object (Expression) }
]
}
Example:
{
"$fn": "dateTrunc",
"$operands": [
{ "$scalar": "month" },
{
"$qualifier": { "$table": "events" },
"$identifier": "event_time"
}
]
}

$dateDiff

Added in: indicate.dsl.dql@1.0.0
Calculates the difference between two dates or timestamps.

{
"$fn": "dateDiff",
"$operands": [
{ object (Expression) },
{ object (Expression) },
{ object (Expression) }
]
}
Example:
{
"$fn": "dateDiff",
"$operands": [
{ "$scalar": "day" },
{
"$qualifier": { "$table": "orders" },
"$identifier": "order_date"
},
{
"$qualifier": { "$table": "orders" },
"$identifier": "delivery_date"
}
]
}

$currentDate

Added in: indicate.dsl.dql@1.0.0
Returns the current date in the local timezone.

{
"$fn": "currentDate"
}
Example:
{
"$fn": "currentDate"
}

$currentTime

Added in: indicate.dsl.dql@1.0.0
Returns the current time in the local timezone.

{
"$fn": "currentTime"
}
Example:
{
"$fn": "currentTime"
}

$currentTimestamp

Added in: indicate.dsl.dql@1.0.0
Returns the current timestamp in the local timezone.

{
"$fn": "currentTimestamp"
}
Example:
{
"$fn": "currentTimestamp"
}

$datePart

Added in: indicate.dsl.dql@1.0.0
Extracts a specified part from a date or timestamp.

{
"$fn": "datePart",
"$operands": [
{ object (Expression) },
{ object (Expression) }
]
}
Example:
{
"$fn": "datePart",
"$operands": [
{ "$scalar": "year" },
{
"$qualifier": { "$table": "events" },
"$identifier": "event_time"
}
]
}

$extract

Added in: indicate.dsl.dql@1.0.0
Alias for datePart; extracts a specified part from a date or timestamp.

{
"$fn": "extract",
"$operands": [
{ object (Expression) },
{ object (Expression) }
]
}
Example:
{
"$fn": "extract",
"$operands": [
{ "$scalar": "month" },
{
"$qualifier": { "$table": "orders" },
"$identifier": "order_date"
}
]
}

$strftime

Added in: indicate.dsl.dql@1.0.0
Formats a date or timestamp using a format string (e.g., '%Y-%m-%d').

{
"$fn": "strftime",
"$operands": [
{ object (Expression) },
{ object (Expression) }
]
}
Example:
{
"$fn": "strftime",
"$operands": [
{
"$qualifier": { "$table": "events" },
"$identifier": "event_date"
},
{ "$scalar": "%Y-%m-%d" }
]
}