1

我想用夏令时将我的表的时间戳(GMT)显示为 CST。

从 3 月 2 日星期日凌晨 2:00 到 11 月 1 日星期日凌晨 2:00 = 时间戳(格林威治标准时间) - 一年中其他日子的 5 小时 = 时间戳(格林威治标准时间) - 6 小时

它似乎正在工作。现在又遇到了一个问题。Teradata 表具有 CST 时间戳。另一个表(不同的源,但已加载到 teradata 暂存表)具有 GMT。两个时间戳看起来很相似。但是当我减去两者时,它不会给我 NULL 值。时间戳看起来像 12/20/2012 08:30:00.000000

4

1 回答 1

1

假设数据类型是没有 TIME ZONE 的 TIMESTAMP,您可以简单地指定所需的时区(在 TD13.10+ 中)。'America Central' 是具有夏令时的预定义时区:

CREATE VOLATILE TABLE vt ( ts TIMESTAMP(0)) ON COMMIT PRESERVE ROWS;

INSERT INTO vt (TIMESTAMP'2013-03-10 07:59:00');
INSERT INTO vt (TIMESTAMP'2013-03-10 08:01:00');
INSERT INTO vt (TIMESTAMP'2013-11-03 06:59:00');
INSERT INTO vt (TIMESTAMP'2013-11-03 07:01:00');

SEL ts, ts AT 'America Central' AS CST
FROM vt
ORDER BY 1;

*** Query completed. 4 rows found. 2 columns returned.
*** Total elapsed time was 1 second.                  

                 ts                        CST        
-------------------  -------------------------        
2013-03-10 07:59:00  2013-03-10 01:59:00-06:00        
2013-03-10 08:01:00  2013-03-10 03:01:00-05:00        
2013-11-03 06:59:00  2013-11-03 01:59:00-05:00        
2013-11-03 07:01:00  2013-11-03 01:01:00-06:00        
于 2013-09-11T19:28:28.000 回答