【问题标题】:Teradata: How can I convert a TIMESTAMP(6) field value to GMT?Teradata:如何将 TIMESTAMP(6) 字段值转换为 GMT?
【发布时间】:2012-11-10 05:15:52
【问题描述】:

我有一个表,其列定义为TIMESTAMP(6)。我需要将此列中的所有时间值从 EST 转换为 GMT。我该怎么办?

【问题讨论】:

  • 您是否只需要从每行中添加或减去相同的小时数?你关心夏令时吗?

标签: timezone teradata gmt


【解决方案1】:
/* 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 语句然后重命名表可能更容易。如果仅用于显示目的,您可以只使用视图来完成转换。

您需要考虑夏令时吗?那么转换可能会有点棘手。

【讨论】:

  • 有趣。在谷歌搜索如何在考虑 DST 的同时将东部时间转换为 GMT 时,我遇到了自己的问题!
【解决方案2】:

我做了一些工作来补偿 DST,但效果很好。我正在从 UTC 转换为太平洋并在 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

【讨论】:

    猜你喜欢
    • 2019-01-27
    • 2015-06-27
    • 2016-10-31
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    相关资源
    最近更新 更多