2017-02-09 49 views
0

从MySQL导入表红移时,MySQL必须是列time数据类型如何在红移HH只保存时间:MM:SS

+-----------------+-------------+------+-----+---------+----------------+ 
| Field   | Type  | Null | Key | Default | Extra   | 
+-----------------+-------------+------+-----+---------+----------------+ 
| id    | int(11)  | NO | PRI | NULL | auto_increment | 
| typecode  | varchar(20) | NO |  | NULL |    | 
| slot_start_time | time  | NO |  | NULL |    | 
| slot_end_time | time  | NO |  | NULL |    | 
| parent_id  | int(11)  | NO |  | NULL |    | 
| createdon  | datetime | NO |  | NULL |    | 
| modifiedon  | datetime | NO |  | NULL |    | 
+-----------------+-------------+------+-----+---------+----------------+ 

红移没有时间数据类型,因为这种进口表后slot_start_time, slot_end_time列在这种情况下返回1970-01-01slot_start_time, slot_end_time显示为Date数据类型

当我ALTER在红移两列时间戳那么它将返回'01/01/70 HH:MM”

因此,如何我只能保存时间红移。

回答

0

由于您在Redshift中没有时间列,因此您可以使用相同日期,例如'1970-01-01',然后添加时间。

,那么你就可以在球场上运行date_part数。

例如

select extract(hour from timestamp '2010-02-16 20:38:40'); 
date_part 
4

我会强烈建议不要试图进行这样的冒险。您可能最终会使用一些不兼容的数据类型,如字符串这实际上可能会帮助您存储时间,但当您实际开始查询您的数据时,将会是灾难性的

在最坏的情况下,如果Redshift发现数据类型不兼容,并且整个列将填充空值,则甚至可能不填充日期列。

在红移表,存储整个时间戳格式

YYYY-MM-DD HH:MM:SS(使用任何占位符的日期格式;如日期无关你在任何情况)

并使用任何函数在查询表时只提取时间戳(插图如下所示)。

enter image description here