GoogleSQL for SecOps supports conversion functions. These data type conversions are explicit, but some conversions can happen implicitly. You can learn more about implicit and explicit conversion here.
Function list
| Name | Summary |
|---|---|
ARRAY_TO_STRING
|
Produces a concatenation of the elements in an array as a
STRING value.
For more information, see Array functions. |
CAST
|
Convert the results of an expression to the given type. |
CODE_POINTS_TO_BYTES
|
Converts an array of extended ASCII code points to a
BYTES value.
For more information, see String aggregate functions. |
CODE_POINTS_TO_STRING
|
Converts an array of extended ASCII code points to a
STRING value.
For more information, see String aggregate functions. |
DATE_FROM_UNIX_DATE
|
Interprets an INT64 expression as the number of days
since 1970-01-01.
For more information, see Date functions. |
FROM_BASE32
|
Converts a base32-encoded STRING value into a
BYTES value.
For more information, see String functions. |
FROM_BASE64
|
Converts a base64-encoded STRING value into a
BYTES value.
For more information, see String functions. |
PARSE_DATE
|
Converts a STRING value to a DATE value.
For more information, see Date functions. |
PARSE_DATETIME
|
Converts a STRING value to a DATETIME value.
For more information, see Datetime functions. |
PARSE_TIME
|
Converts a STRING value to a TIME value.
For more information, see Time functions. |
PARSE_TIMESTAMP
|
Converts a STRING value to a TIMESTAMP value.
For more information, see Timestamp functions. |
STRING (Timestamp)
|
Converts a TIMESTAMP value to a STRING value.
For more information, see Timestamp functions. |
TIMESTAMP_MICROS
|
Converts the number of microseconds since
1970-01-01 00:00:00 UTC to a TIMESTAMP.
For more information, see Timestamp functions. |
TIMESTAMP_MILLIS
|
Converts the number of milliseconds since
1970-01-01 00:00:00 UTC to a TIMESTAMP.
For more information, see Timestamp functions. |
TIMESTAMP_SECONDS
|
Converts the number of seconds since
1970-01-01 00:00:00 UTC to a TIMESTAMP.
For more information, see Timestamp functions. |
TO_BASE32
|
Converts a BYTES value to a
base32-encoded STRING value.
For more information, see String functions. |
TO_BASE64
|
Converts a BYTES value to a
base64-encoded STRING value.
For more information, see String functions. |
TO_CODE_POINTS
|
Converts a STRING or BYTES value into an array of
extended ASCII code points.
For more information, see String functions. |
TO_JSON_STRING
|
Converts a SQL value to a JSON-formatted STRING value.
For more information, see JSON functions. |
UNIX_DATE
|
Converts a DATE value to the number of days since 1970-01-01.
For more information, see Date functions. |
UNIX_MICROS
|
Converts a TIMESTAMP value to the number of microseconds since
1970-01-01 00:00:00 UTC.
For more information, see Timestamp functions. |
UNIX_MILLIS
|
Converts a TIMESTAMP value to the number of milliseconds
since 1970-01-01 00:00:00 UTC.
For more information, see Timestamp functions. |
UNIX_SECONDS
|
Converts a TIMESTAMP value to the number of seconds since
1970-01-01 00:00:00 UTC.
For more information, see Timestamp functions. |
CAST
CAST(expression AS typename [format_clause])
Description
Cast syntax is used in a query to indicate that the result type of an expression should be converted to some other type.
When using CAST, a query can fail if GoogleSQL is unable to perform
the cast. If you want to protect your queries from these types of errors, you
can use SAFE_CAST.
Casts between supported types that don't successfully map from the original
value to the target domain produce runtime errors. For example, casting
BYTES to STRING where the byte sequence isn't valid UTF-8 results in a
runtime error.
Some casts can include a format clause, which provides instructions for how to conduct the cast.
The structure of the format clause is unique to each type of cast and more information is available in the section for that cast.
Examples
The following query results in "true" if x is 1, "false" for any other
non-NULL value, and NULL if x is NULL.
CAST(x=1 AS STRING)
CAST AS ARRAY
CAST(expression AS ARRAY<element_type>)
Description
GoogleSQL supports casting to ARRAY. The
expression parameter can represent an expression for these data types:
ARRAY
Conversion rules
| From | To | Rule(s) when casting x |
|---|---|---|
ARRAY |
ARRAY |
Must be the exact same array type. |
NULL |
ARRAY |
Casts a NULL value to a specific type of array. For example,
CAST(NULL AS ARRAY<FLOAT64>) returns
a NULL literal of type
ARRAY<FLOAT64>.
|
CAST AS BOOL
CAST(expression AS BOOL)
Description
GoogleSQL supports casting to BOOL. The
expression parameter can represent an expression for these data types:
INT64BOOLSTRING
Conversion rules
| From | To | Rule(s) when casting x |
|---|---|---|
| INT64 | BOOL |
Returns FALSE if x is 0,
TRUE otherwise.
|
STRING |
BOOL |
Returns TRUE if x is "true" and
FALSE if x is "false"All other values of x are invalid and throw an error instead
of casting to a boolean.A string is case-insensitive when converting to a boolean. |
CAST AS BYTES
CAST(expression AS BYTES)
Description
GoogleSQL supports casting to BYTES. The
expression parameter can represent an expression for these data types:
BYTESSTRING
Conversion rules
| From | To | Rule(s) when casting x |
|---|---|---|
STRING |
BYTES |
Strings are cast to bytes using UTF-8 encoding. For example, the string "©", when cast to bytes, would become a 2-byte sequence with the hex values C2 and A9. |
CAST AS DATE
CAST(expression AS DATE)
Description
GoogleSQL supports casting to DATE. The expression
parameter can represent an expression for these data types:
STRINGDATETIMETIMESTAMP
Conversion rules
| From | To | Rule(s) when casting x |
|---|---|---|
STRING |
DATE |
When casting from string to date, the string must conform to the supported date literal format, and is independent of time zone. If the string expression is invalid or represents a date that's outside of the supported min/max range, then an error is produced. |
TIMESTAMP |
DATE |
Casting from a timestamp to date effectively truncates the timestamp as of the default time zone. |
CAST AS DATETIME
CAST(expression AS DATETIME)
Description
GoogleSQL supports casting to DATETIME. The
expression parameter can represent an expression for these data types:
STRINGDATETIMETIMESTAMP
Conversion rules
| From | To | Rule(s) when casting x |
|---|---|---|
STRING |
DATETIME |
When casting from string to datetime, the string must conform to the supported datetime literal format, and is independent of time zone. If the string expression is invalid or represents a datetime that's outside of the supported min/max range, then an error is produced. |
TIMESTAMP |
DATETIME |
Casting from a timestamp to datetime effectively truncates the timestamp as of the default time zone. |
CAST AS FLOAT64
CAST(expression AS FLOAT64)
Description
GoogleSQL supports casting to floating point types.
The expression parameter can represent an expression for these data types:
INT64FLOAT64NUMERICSTRING
Conversion rules
| From | To | Rule(s) when casting x |
|---|---|---|
| INT64 | FLOAT64 | Returns a close but potentially not exact floating point value. |
NUMERIC |
FLOAT64 |
NUMERIC will convert to the closest floating point number
with a possible loss of precision.
|
STRING |
FLOAT64 |
Returns x as a floating point value, interpreting it as
having the same form as a valid floating point literal.
Also supports casts from "[+,-]inf" to
[,-]Infinity,
"[+,-]infinity" to [,-]Infinity, and
"[+,-]nan" to NaN.
Conversions are case-insensitive.
|
CAST AS INT64
CAST(expression AS INT64)
Description
GoogleSQL supports casting to integer types.
The expression parameter can represent an expression for these data types:
INT64FLOAT64NUMERICBOOLSTRING
Conversion rules
| From | To | Rule(s) when casting x |
|---|---|---|
| FLOAT64 | INT64 |
Returns the closest integer value. Halfway cases such as 1.5 or -0.5 round away from zero. |
BOOL |
INT64 |
Returns 1 if x is TRUE,
0 otherwise.
|
STRING |
INT64 |
A hex string can be cast to an integer. For example,
0x123 to 291 or -0x123 to
-291.
|
Examples
If you are working with hex strings (0x123), you can cast those strings as
integers:
SELECT '0x123' as hex_value, CAST('0x123' as INT64) as hex_to_int;
/*-----------+------------+
| hex_value | hex_to_int |
+-----------+------------+
| 0x123 | 291 |
+-----------+------------*/
SELECT '-0x123' as hex_value, CAST('-0x123' as INT64) as hex_to_int;
/*-----------+------------+
| hex_value | hex_to_int |
+-----------+------------+
| -0x123 | -291 |
+-----------+------------*/
CAST AS NUMERIC
CAST(expression AS NUMERIC)
Description
GoogleSQL supports casting to NUMERIC. The
expression parameter can represent an expression for these data types:
INT64FLOAT64NUMERICSTRING
Conversion rules
| From | To | Rule(s) when casting x |
|---|---|---|
FLOAT64 |
NUMERIC |
The floating point number will round
half away from zero.
Casting a NaN, +inf or
-inf will return an error. Casting a value outside the range
of NUMERIC returns an overflow error.
|
STRING |
NUMERIC |
The numeric literal contained in the string must not exceed
the maximum precision or range of the NUMERIC
type, or an error will occur. If the number of digits
after the decimal point exceeds nine, then the resulting
NUMERIC value will round
half away from zero.
to have nine digits after the decimal point.
|
CAST AS STRING
CAST(expression AS STRING)
Description
GoogleSQL supports casting to STRING. The
expression parameter can represent an expression for these data types:
INT64FLOAT64NUMERICBOOLBYTESTIMEDATEDATETIMETIMESTAMPSTRING
Conversion rules
| From | To | Rule(s) when casting x |
|---|---|---|
| FLOAT64 | STRING |
Returns an approximate string representation. A returned
NaN or 0 will not be signed. |
BOOL |
STRING |
Returns "true" if x is TRUE,
"false" otherwise. |
BYTES |
STRING |
Returns x interpreted as a UTF-8 string.For example, the bytes literal b'\xc2\xa9', when cast to a string,
is interpreted as UTF-8 and becomes the unicode character "©".An error occurs if x isn't valid UTF-8. |
TIME |
STRING |
Casting from a time type to a string is independent of time zone and
is of the form HH:MM:SS.
|
DATE |
STRING |
Casting from a date type to a string is independent of time zone and is
of the form YYYY-MM-DD.
|
DATETIME |
STRING |
Casting from a datetime type to a string is independent of time zone and
is of the form YYYY-MM-DD HH:MM:SS.
|
TIMESTAMP |
STRING |
When casting from timestamp types to string, the timestamp is interpreted using the default time zone, UTC. The number of subsecond digits produced depends on the number of trailing zeroes in the subsecond part: the CAST function will truncate zero, three, or six digits. |
Examples
SELECT CAST(CURRENT_DATE() AS STRING) AS current_date
/*---------------+
| current_date |
+---------------+
| 2021-03-09 |
+---------------*/
CAST AS STRUCT
CAST(expression AS STRUCT)
Description
GoogleSQL supports casting to STRUCT. The
expression parameter can represent an expression for these data types:
STRUCT
Conversion rules
| From | To | Rule(s) when casting x |
|---|---|---|
STRUCT |
STRUCT |
Allowed if the following conditions are met:
|
CAST AS TIME
CAST(expression AS TIME)
Description
GoogleSQL supports casting to TIME. The expression
parameter can represent an expression for these data types:
STRINGTIMEDATETIMETIMESTAMP
Conversion rules
| From | To | Rule(s) when casting x |
|---|---|---|
STRING |
TIME |
When casting from string to time, the string must conform to the supported time literal format, and is independent of time zone. If the string expression is invalid or represents a time that's outside of the supported min/max range, then an error is produced. |
CAST AS TIMESTAMP
CAST(expression AS TIMESTAMP)
Description
GoogleSQL supports casting to TIMESTAMP. The
expression parameter can represent an expression for these data types:
DATEDATETIMESTRINGTIMESTAMP
Conversion rules
| From | To | Rule(s) when casting x |
|---|---|---|
STRING |
TIMESTAMP |
When casting from string to a timestamp, string_expression
must conform to the supported timestamp literal formats, or else a runtime
error occurs. The string_expression may itself contain a
time zone.
If there is a time zone in the string_expression, that
time zone is used for conversion, otherwise the default time zone,
UTC, is used. If the string has fewer than six digits,
then it's implicitly widened.
An error is produced if the string_expression is invalid,
has more than six subsecond digits (i.e., precision greater than
microseconds), or represents a time outside of the supported timestamp
range.
|
DATE |
TIMESTAMP |
Casting from a date to a timestamp interprets date_expression
as of midnight (start of the day) in the default time zone,
UTC.
|
DATETIME |
TIMESTAMP |
Casting from a datetime to a timestamp interprets
datetime_expression in the default time zone,
UTC.
Most valid datetime values have exactly one corresponding timestamp in each time zone. However, there are certain combinations of valid datetime values and time zones that have zero or two corresponding timestamp values. This happens in a time zone when clocks are set forward or set back, such as for Daylight Savings Time. When there are two valid timestamps, the earlier one is used. When there is no valid timestamp, the length of the gap in time (typically one hour) is added to the datetime. |
Examples
The following example casts a string-formatted timestamp as a timestamp:
SELECT CAST("2020-06-02 17:00:53.110+00:00" AS TIMESTAMP) AS as_timestamp