【问题标题】: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;
因此,如果这不能帮助解决问题,请发布一个完整的测试用例来演示错误。