【问题标题】:How do I insert a time value in Redshift in a time column?如何在 Redshift 中的时间列中插入时间值?
【发布时间】:2021-04-23 00:20:57
【问题描述】:

给定以下查询 ALTER TABLE public.alldatatypes ADD x_time time ;, 如何将值插入x_time

根据文档,

时间似乎是有效的列类型。

但是,当我尝试插入时,我总是会收到错误。

插入查询:insert into public.alldatatypes(x_time) values('08:00:00');

错误:

SQL 错误 [500310] [0A000]:亚马逊无效操作: 不支持指定的类型或功能(每个 INFO 消息一个) 红移表。;

我不想使用其他列类型。 我正在测试文档中定义的所有列类型。

【问题讨论】:

标签: amazon-web-services amazon-redshift


【解决方案1】:

当您尝试将仅领导者功能用作计算节点的源数据时,Redshift 会给出这条神秘的错误消息。因此,希望您没有显示您运行以生成此错误的确切代码。我知道您似乎没有更改对问题很重要的任何内容,但您可能已经更改了。

您会看到 select now(); 工作正常,但 insert into <table> select now(); 会给出您所显示的错误。这是因为 now() 是一个仅限领导者的函数。但是 insert into <table> select getdate(); 效果很好 - 这是因为 getdate() 是一个在计算节点上运行的函数。

现在下面的 SQL 对我来说运行得很好:

create table fred (ttt time);
insert into public.fred(ttt) values('01:23:00'); -- this is more correctly written values('01:23:00':time)
insert into public.fred(ttt) select getdate()::time;
select * from fred;

虽然这会引发您得到的错误:

insert into public.fred(ttt) select now()::time;

因此,如果这不能帮助解决问题,请发布一个完整的测试用例来演示错误。

【讨论】:

    猜你喜欢
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    相关资源
    最近更新 更多