Skip to main content

CAST Function

Casts the value expr to the target data type.

Syntax

cast(expression AS dataType)

Parameters

Returns

The result of expression in type specified by dataType.

The following table defines allowed type casts:

Source Type

Target Types

BOOLEAN

INTEGER, BIGINT, VARCHAR

INTEGER

BOOLEAN, BIGINT, DOUBLE, DECIMAL, INTERVAL YEAR, INTERVAL MONTH, INTERVAL DAY, INTERVAL HOUR, INTERVAL MINUTE, INTERVAL SECOND, VARCHAR

BIGINT

BOOLEAN, INTEGER, DOUBLE, DECIMAL, INTERVAL YEAR, INTERVAL MONTH, INTERVAL DAY, INTERVAL HOUR, INTERVAL MINUTE, INTERVAL SECOND, VARCHAR

DOUBLE

INTEGER, BIGINT, DECIMAL, VARCHAR

DECIMAL

INTEGER, BIGINT, DOUBLE, VARCHAR

DATE

TIMESTAMP, TIMESTAMP WITH TIME ZONE, VARCHAR

TIMESTAMP

DATE, TIMESTAMP WITH TIME ZONE, VARCHAR

TIMESTAMP WITH TIME ZONE

DATE, TIMESTAMP, VARCHAR

INTERVAL YEAR TO MONTH

INTERVAL YEAR, INTERVAL MONTH, VARCHAR

INTERVAL DAY TO HOUR

INTERVAL DAY TO MINUTE, INTERVAL DAY TO SECOND, INTERVAL HOUR TO MINUTE, INTERVAL HOUR TO SECOND, INTERVAL MINUTE TO SECOND, INTERVAL DAY, INTERVAL HOUR, INTERVAL MINUTE, INTERVAL SECOND, VARCHAR

INTERVAL DAY TO MINUTE

INTERVAL DAY TO HOUR, INTERVAL DAY TO SECOND, INTERVAL HOUR TO MINUTE, INTERVAL HOUR TO SECOND, INTERVAL MINUTE TO SECOND, INTERVAL DAY, INTERVAL HOUR, INTERVAL MINUTE, INTERVAL SECOND, VARCHAR

INTERVAL DAY TO SECOND

INTERVAL DAY TO HOUR, INTERVAL DAY TO MINUTE, INTERVAL HOUR TO MINUTE, INTERVAL HOUR TO SECOND, INTERVAL MINUTE TO SECOND, INTERVAL DAY, INTERVAL HOUR, INTERVAL MINUTE, INTERVAL SECOND, VARCHAR

INTERVAL HOUR TO MINUTE

INTERVAL DAY TO HOUR, INTERVAL DAY TO MINUTE, INTERVAL DAY TO SECOND, INTERVAL HOUR TO SECOND, INTERVAL MINUTE TO SECOND, INTERVAL DAY, INTERVAL HOUR, INTERVAL MINUTE, INTERVAL SECOND, VARCHAR

INTERVAL HOUR TO SECOND

INTERVAL DAY TO HOUR, INTERVAL DAY TO MINUTE, INTERVAL DAY TO SECOND, INTERVAL HOUR TO MINUTE, INTERVAL MINUTE TO SECOND, INTERVAL DAY, INTERVAL HOUR, INTERVAL MINUTE, INTERVAL SECOND, VARCHAR

INTERVAL MINUTE TO SECOND

INTERVAL DAY TO HOUR, INTERVAL DAY TO MINUTE, INTERVAL DAY TO SECOND, INTERVAL HOUR TO MINUTE, INTERVAL HOUR TO SECOND, INTERVAL DAY, INTERVAL HOUR, INTERVAL MINUTE, INTERVAL SECOND, VARCHAR

INTERVAL YEAR

INTEGER, BIGINT, INTERVAL YEAR TO MONTH, INTERVAL MONTH, VARCHAR

INTERVAL MONTH

INTEGER, BIGINT, INTERVAL YEAR TO MONTH, INTERVAL YEAR, VARCHAR

INTERVAL DAY

INTEGER, BIGINT, INTERVAL DAY TO HOUR, INTERVAL DAY TO MINUTE, INTERVAL DAY TO SECOND, INTERVAL HOUR TO MINUTE, INTERVAL HOUR TO SECOND, INTERVAL MINUTE TO SECOND, INTERVAL HOUR, INTERVAL MINUTE, INTERVAL SECOND, VARCHAR

INTERVAL HOUR

INTEGER, BIGINT, INTERVAL DAY TO HOUR, INTERVAL DAY TO MINUTE, INTERVAL DAY TO SECOND, INTERVAL HOUR TO MINUTE, INTERVAL HOUR TO SECOND, INTERVAL MINUTE TO SECOND, INTERVAL DAY, INTERVAL MINUTE, INTERVAL SECOND, VARCHAR

INTERVAL MINUTE

INTEGER, BIGINT, INTERVAL DAY TO HOUR, INTERVAL DAY TO MINUTE, INTERVAL DAY TO SECOND, INTERVAL HOUR TO MINUTE, INTERVAL HOUR TO SECOND, INTERVAL MINUTE TO SECOND, INTERVAL DAY, INTERVAL HOUR, INTERVAL SECOND, VARCHAR

INTERVAL SECOND

INTEGER, BIGINT, INTERVAL DAY TO HOUR, INTERVAL DAY TO MINUTE, INTERVAL DAY TO SECOND, INTERVAL HOUR TO MINUTE, INTERVAL HOUR TO SECOND, INTERVAL MINUTE TO SECOND, INTERVAL DAY, INTERVAL HOUR, INTERVAL MINUTE, VARCHAR

VARCHAR

BOOLEAN, INTEGER, BIGINT, DOUBLE, DECIMAL, DATE*, TIMESTAMP*, TIMESTAMP WITH TIME ZONE*, INTERVAL YEAR TO MONTH*, INTERVAL DAY TO HOUR*, INTERVAL DAY TO MINUTE*, INTERVAL DAY TO SECOND*, INTERVAL HOUR TO MINUTE*, INTERVAL HOUR TO SECOND*, INTERVAL MINUTE TO SECOND*, INTERVAL YEAR*, INTERVAL MONTH*, INTERVAL DAY*, INTERVAL HOUR*, INTERVAL MINUTE*, INTERVAL SECOND*, VARBINARY

VARBINARY

* Casting from VARCHAR to DATE or TIMESTAMP types only supports strings matching the format YYYY-MM-DD HH:MI:SS.MS/US. For other formats, use the TO_DATE or TO_TIMESTAMP functions. Similarly, for INTERVAL types, only strings in the format X or X-Y (where X and Y are string integers) are supported.

* When casting a VARCHAR that includes a timezone to a TIMESTAMP (without timezone), Vertica consider the timezone and return the value in UTC, whereas Spark-based engine typically ignore the timezone.

Casting to VARCHAR differences

Interval types

The conversion of interval types to VARCHAR differs between execution layers. Spark-based engine include the full interval definition (e.g., INTERVAL ... YEAR TO MONTH) in the output string, whereas Vertica return only the value.

Example:

SELECT CAST(INTERVAL '100-0' YEAR TO MONTH AS VARCHAR);

-- Result in Vertica: '100-0'
-- Result in Spark-based engine: "INTERVAL '100-0' YEAR TO MONTH"

Timezones

Casting a TIMESTAMP WITH TIME ZONE to VARCHAR always returns the value in the UTC timezone. However, the string formatting varies: Vertica include the UTC offset (+00) in the string, while Spark-based engine does not.

Example:

SELECT CAST(TIMESTAMP WITH TIME ZONE '2025-05-13 12:00:00 EST' AS VARCHAR);

-- Result in Vertica: '2025-05-13 17:00:00+00'
-- Result in Spark-based engine: '2025-05-13 17:00:00'