Redshift dateadd() 函数错误白色将时间值从 varchar 转换为 time

Posted

技术标签:

【中文标题】Redshift dateadd() 函数错误白色将时间值从 varchar 转换为 time【英文标题】:Redshift dateadd() function error white casting the time value from varchar to time 【发布时间】:2020-10-22 15:46:38 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

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

编辑:为了清晰起见,从 cmets 提取更正的代码以回答正文。

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

【讨论】:

我使用了共享转换功能,但它给我错误 [Amazon](500310) 无效操作:未实现详细信息:----------------- ------------------------------ 错误:未实现代码:1001 上下文:'!func_info->is_nullable_' - 函数:time_pl_interval (), funcID = 1747 查询:5605192 位置:cg_expr_fn_builder.cpp:2476 进程:padbmaster [pid=32128] -------------------------- ---------------------; 1 个语句失败。执行时间:2.69s column Aarrival_time 是字符串类型,只有字符串格式的时间,如“10:30:00” 我想在这段时间内添加一小时,我们希望“11:30:00” 有趣 - while "select cast('10:30:00' as time) + interval '1 hour';"有效,从表中获取字符串不会(RS监督?)。使用时间戳并转换为时间有效 - “cast(cast('2000/01/01 '||arrival_time as timestamp) + interval '1 hour' as time)”是有效的。您最初使用 dateadd() 也可以将字符串转换为时间戳,然后将结果转换为时间 - "cast(dateadd(hour, 1, cast('2000/01/01 '||arrival_time as timestamp)) as time )"。 没有运气,[Amazon](500310) 无效操作:时间戳超出范围。详细信息:------------------------------------------------错误: 时间戳超出范围。代码:8001 上下文:查询:5619461 位置:funcs_timestamp.cpp:219 进程:query0_125_5619461 [pid=4972] --------------------------- --------------------; 1 个语句失败。执行时间:1.25s 查询是 selectarrival_time, cast(dateadd(hour, 1, cast(arrival_time as timestamp)) as time) as newt from stg.t_stop_times where trip_id = 't_1246330_b_616_tn_0'

以上是关于Redshift dateadd() 函数错误白色将时间值从 varchar 转换为 time的主要内容,如果未能解决你的问题,请参考以下文章

DATEADD() 函数不返回相加值

Perl OLE32 MSSQL dateadd 函数结果上的“光标类型已更改”错误

将 VB Date() 和 DateAdd 函数转换为 PHP

有没有办法在 AWS Redshift 中将 VARCHAR 转换为 DATE?

Redshift 更新内连接

redshift 用户定义的 Lambda 函数返回错误