在teradata中将时间戳从gmt转换为cst,节省了白天

时间:2013-09-11 18:15:12

标签: sql date calendar teradata

我希望将表格的时间戳(GMT)显示为夏令时的CST。

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

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

1 个答案:

答案 0 :(得分: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