Syntax:
CAST(expr AS type [ARRAY])

CAST(timestamp_value AT TIME ZONE timezone_specifier AS
DATETIME[(precision)])

timezone_specifier: [INTERVAL] '+00:00' | 'UTC'

The CAST() function takes an expression of any type and produces a
result value of the specified type, similar to CONVERT(). For more
information, see the description of CONVERT().

In MySQL 8.0.17 and higher, InnoDB allows the use of an additional
ARRAY keyword for creating a multi-valued index on a JSON array as part
of CREATE INDEX, CREATE TABLE, and ALTER TABLE statements. ARRAY is not
supported except when used to create a multi-valued index in one of
these statements, in which case it is required. The column being
indexed must be a column of type JSON. With ARRAY, the type following
the AS keyword may specify any of the types supported by CAST(), with
the exceptions of BINARY, JSON, and YEAR. For syntax information and
examples, as well as other relevant information, see
https://dev.mysql.com/doc/refman/8.0/en/create-index.html#create-index-
multi-valued.

*Note*:

Unlike CAST(), CONVERT() does not support multi-valued index creation
or the ARRAY keyword.

Beginning with MySQL 8.0.22, CAST() supports retrieval of a TIMESTAMP
value as being in UTC, using the AT TIMEZONE operator. The only
supported time zone is UTC; this can be specified as either of '+00:00'
or 'UTC'. The only return type supported by this syntax is DATETIME,
with an optional precision specifier in the range of 0 to 6, inclusive.

TIMESTAMP values that use timezone offsets are also supported.

URL: https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html

