我创建了一个日期时间字段为“dt”的表。使用COPY命令加载数据。来自文件的字段的对应值仅是小时信息,即比如14:50:00。因此,存储的值是1900-01-01 14:50:00。我不需要日期部分。怎么做。
或者可以是只能存储时间的备用数据类型。
答案 0 :(得分:0)
Amazon Redshift仅支持日期(年月日)和时间戳(年月日小时秒)格式,并且不支持Postgresql的时间(小时秒)格式。
在我的想法中,有两种方法可以解决。
create table date_test(id int, timestamp timestamp);
insert into date_test2 values (1, '1900-01-01 14:50:00');
insert into date_test2 values (2, '1900-01-01 17:20:00');
select * from date_test2 where timestamp > '1900-01-01 14:50:00';
select * from date_test where date_test.timestamp > '1900-01-01 14:50:00';
id | timestamp
----+---------------------
2 | 1900-01-01 17:20:00
(1 row)
create table date_test2(id int, timestamp char(8));
insert into date_test2 values (1, '14:50:00');
insert into date_test2 values (2, '17:20:00');
select * from date_test2 where timestamp > '14:50:00';
id | timestamp
----+-----------
2 | 17:20:00
(1 row)
第二种解决方案看起来更容易,但正如Redshift doc所说,性能更差。如果存储大量数据,则应考虑第一个数据。
以下是有关日期/时间列的文档的相关链接。