Redshift:从“时间(HH:MM:SS)”列中获取小时数

时间:2019-07-10 12:15:52

标签: amazon-redshift

我有一个带有HH:MM:SS格式的值的时间列。如何仅从该列获取小时?

我尝试使用extract(hour)函数。

select extract(hour from opentime::datetime)
from transaction

我收到一条错误消息,指出Amazon无效操作:时间戳超出范围。我认为这是因为opentime列不完全是DateTime,而只是时间。

我只需要一个小时。

column value --> 09:00:00
expected output --> 09

2 个答案:

答案 0 :(得分:1)

如果输入列是字符串,则使用以下命令提取小时数:

LEFT(opentime, 2)::integer

答案 1 :(得分:0)

您可以在TIME列上执行SUBSTRING操作

select '13:21:23'::TIME as t, substring(t, 1, 2);

返回

t           hour
13:21:23    13