我有一个表格,其列定义为TIMESTAMP(6)
。我需要对此列中的所有时间值进行质量转换,从EST到GMT。我该怎么做?
答案 0 :(得分:3)
/* EST is GMT -5:00:00 - To convert add 5 Hours to each timestamp */
select timestamp '2012-11-21 18:50:00' + interval '5:00:00' hour to second;
如何将此应用于您的数据部分取决于您所谈论的数据量。将MERGE INTO SQL语句用于空表然后重命名表可能更容易。如果仅用于显示目的,您只需使用视图即可完成转换。
您需要考虑夏令时吗?转换可能有点棘手。
答案 1 :(得分:0)
我做了一些工作来弥补DST,但效果很好。我正在从UTC转换到Pacific并在Teradata SQL Assist中工作。
select
cast( a.strt_dt_tm as date) as BaseDt,
case
when BaseDt < '2018-03-11' then a.strt_dt_tm - interval '8:00:00' hour to second
when BaseDt>= '2018-03-11' then a.strt_dt_tm - interval '7:00:00' hour to second
end as Offsetz,
cast(offsetz as date) as OffSt_Dt,
from Time_Table