我正在尝试从Amazon Redshift数据库(Postgresql 8.0)中的日期时间列中提取时间。我已经提到了this之前的问题。但我得到了一个不寻常的错误。
当我尝试:
SELECT collected_timestamp::time
或
SELECT cast(collected_timestamp as time)
我收到以下错误:
ERROR: Specified types or functions (one per INFO message) not supported on Redshift tables
目标是从时间戳中提取时间部分,以便2017-11-06 13:03:28
返回13:03:28
。
这似乎是一个容易解决的问题,但由于某种原因,我遗漏了一些东西。研究这个错误不会导致任何有意义的事情。任何帮助表示赞赏。
答案 0 :(得分:1)
请注意 Redshift<> PostgreSQL - 它是从PostgreSQL派生出来的,但在幕后却非常不同。
您正在尝试将时间戳值转换为数据类型" time" Redshift中不存在。要返回仅作为时间戳的时间组件的值,您需要将其转换为字符数据类型,例如:
SELECT to_char(collected_timestamp, 'HH24:MI:SS');
答案 1 :(得分:-1)
有几种方法,这是我使用的方法:
SELECT ('2018-03-07 21:55:12'::timestamp - trunc('2018-03-07 21:55:12'::timestamp))::time;
我希望有所帮助。
编辑:我错误地使用了::时间,请参阅其他答案的评论。