Redshift dateadd函数错误将时间值从varchar强制转换为time

问题描述

我正在RedShift数据库中使用工作台执行查询,并且收到以下error。我找不到相同的解决方案。

解决方法

Redshift dateadd()函数对日期或时间戳记数据类型(而不是时间数据类型)进行操作。您没有在“ arrival_time”中显示该值,因此不清楚您需要哪种类型。如果到达时间是日期加时间,则只需将其转换为时间戳而不是时间即可。如果该字符串中只有时间,则将要添加一个间隔,而不要使用dateadd()。像这样:

cast(arrival_time as time) + interval '1 hour'  -- doesn't work due issue described in comments

这种方法也适用于时间戳。

编辑:从注释中拉出更正的代码,以明确答案。

cast(cast('2000/01/01 '||arrival_time as timestamp) + interval '1 hour' as time)