【发布时间】:2019-07-10 12:15:52
【问题描述】:
我有一个时间列,其值采用 HH:MM:SS 格式。如何从该列中仅获取小时?
我尝试过使用 extract(hour) 函数。
select extract(hour from opentime::datetime)
from transaction
我收到一条错误消息,提示 Amazon Invalid operation:Timestamp out of range。我认为这是因为 opentime 列不完全是 DateTime,而只是时间。
我只需要得到小时。
column value --> 09:00:00
expected output --> 09
【问题讨论】:
-
您可能需要添加一个假日期,例如
extract(hour from ('2000-01-01 ' || opentime)::datetime) -
嘿约翰,这个解决方法奏效了。但是我有很多查询需要应用它,这使得整体查询性能变慢。如果您有任何其他想法,请分享并感谢您的解决方案。
-
如果列是字符串,则使用:
LEFT(opentime, 2)::integer -
嗨,John,感谢这个解决方法在查询时提供了更好的性能。
标签: amazon-redshift