Не уверен, если это ответ, но он слишком длинный для комментария.
Эта «внутренняя» часть хранилища вводит в заблуждение. Нам все равно, как Teradata хранит что-либо внутри.
Мне проще взглянуть на использование BTEQ, поскольку SQL Assistant не показывает часовые пояса, по крайней мере по умолчанию. Итак, если вы вошли в BTEQ ...
--set session timezone to pst (GMT - 8)
SET TIME ZONE INTERVAL -'08:00' HOUR TO MINUTE ;
create volatile table vt_foo (
ts_w_zone timestamp(0) with time zone,
ts_wo_zone timestamp) on commit preserve rows;
insert into vt_foo
select
cast('1998-12-31 20:30:00' as timestamp(0)),
cast('1998-12-31 20:30:00' as timestamp);
select * from vt_foo;
В настоящее время два значения (с tz и без) будут совпадать.
ts_w_zone ts_wo_zone
------------------------- --------------------------
1998-12-31 20:30:00-08:00 1998-12-31 20:30:00.000000
Теперь давайте изменим часовой пояс для вашего сеанса на другой, и посмотрим, что мы получим.
SET TIME ZONE INTERVAL -'03:00' HOUR TO MINUTE ;
select * from vt_foo;
ts_w_zone ts_wo_zone
------------------------- --------------------------
1998-12-31 20:30:00-08:00 1999-01-01 01:30:00.000000
Метка времени с зоной остается прежней. Отображение его без часового пояса автоматически преобразует его в часовой пояс вашего сеанса, который в данном примере равен GMT -3.
EDIT:
Технически, Teradata фактически хранит время с часовым поясом как GMT (1999-01-01 04:30:00) со смещением часового пояса (-8). Вот откуда документация получает значение 1999-01-01 04: 30-08: 00). Но это не так, как это отображается.