Casting timestamps
Results of applications that cast numerics to timestamps differ from Hive 2 to Hive 3. Apache Hive changed the behavior of CAST to comply with the SQL Standard, which does not associate a time zone with the TIMESTAMP type.
Before Upgrade to CDP
Casting a numeric type value into a timestamp could be used to produce a result that
reflected the time zone of the cluster. For example, 1597217764557 is 2020-08-12
00:36:04 PDT. Running the following query casts the numeric to a timestamp in PDT:
> SELECT CAST(1597217764557 AS TIMESTAMP);
| 2020-08-12 00:36:04 |
After Upgrade to CDP
Casting a numeric type value into a timestamp produces a result that reflects
the UTC instead of the time zone of the cluster. Running the following query casts the
numeric to a timestamp in UTC.
> SELECT CAST(1597217764557 AS TIMESTAMP);
| 2020-08-12 07:36:04.557 |
Action Required
Change applications. Do not cast from a numeral to obtain a local time zone.
Built-in functions from_utc_timestamp
and
to_utc_timestamp
can be used to mimic behavior before the
upgrade.