在没有时区的redshift数据库中将时间戳列转换或转换为时间有限制吗?

时间:2016-10-10 12:56:05

标签: amazon-redshift

我正在使用Postgresql处理Amazon Redshift数据库。我有一个时间戳列,我需要将其转换为时间。我使用以下行来确定列属性:

INSERT INTO Izdavanje (registracioniBrojKorisnika, imeKorisnika, identifikacioniBrojKnjige, vremeidatumIzdavanja) 
  SELECT @rbKorisnika, imeKorisnika, @idKnjige, GetDate()
  FROM Korisnici 
  WHERE registracioniBrojKorisnika=@rbKorisnika

此行详细说明了时间戳列的类型为#time;时间戳没有时区'。

要在Postgresql中测试投射方法,我尝试了以下一行:

select * from pg_table_def where tablename = 'tableA'

将时间戳转换为select '2016-10-01 12:12:12'::time

我想在整个列中重新创建这个时间戳'在我的表中,但遇到以下错误,当我运行以下行时:

'12:12:12'

时间戳列是否有限制,没有时区将其转换为时间?

我错误的是,该列的每条记录都没有转换为时间?

- edit-- @halil这里是我用过的修改过的一行。

select timestamp::time from tableA

'SQL Error [500310] [0A000]: [Amazon](500310) Invalid operation: Specified types or functions (one per INFO message) not supported on Redshift tables.;

- edit-- @halil这里是用于减去时间戳的行。我所做的只是减去前一个时间戳:

select (extract(hour from timestamp) || ':' || extract(minute from timestamp) || ':' || extract(second from timestamp)) as my_time from tableA

1 个答案:

答案 0 :(得分:0)

我检查了redshift文档,找不到合适的功能来执行此操作。 但是您可以使用此查询来获得您想要的内容

select date_part(h, your_tm)||':'||date_part(min, your_tm)||':'||date_part(sec, your_tm) from your_table