Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services RedShift-使用时间戳列中的日期更新表_Amazon Web Services_Date_Timestamp_Sql Update_Amazon Redshift - Fatal编程技术网

Amazon web services RedShift-使用时间戳列中的日期更新表

Amazon web services RedShift-使用时间戳列中的日期更新表,amazon-web-services,date,timestamp,sql-update,amazon-redshift,Amazon Web Services,Date,Timestamp,Sql Update,Amazon Redshift,我在红移中有一个名为adata的表,其中包含一列timestamp,其中包含整数类型的数据变量。timestamp列将时间戳保存为历元值。我添加了一个新的列,名为rdate,类型为日期变量。我试图通过转换时间戳列,将日期值插入rdate列 什么在起作用 select timestamp 'epoch' + timestamp * interval '1 second' AS rdate from adata; 这将很好地打印rdate列,时间戳为日期和时间 什么不起作用 insert into

我在红移中有一个名为
adata
的表,其中包含一列
timestamp
,其中包含整数类型的数据变量。
timestamp
列将时间戳保存为历元值。我添加了一个新的列,名为
rdate
,类型为日期变量。我试图通过转换
时间戳
列,将日期值插入
rdate

什么在起作用

select timestamp 'epoch' + timestamp * interval '1 second' AS rdate from adata;
这将很好地打印rdate列,时间戳为日期和时间

什么不起作用

insert into adata (rdate) select timestamp 'epoch' + timestamp * interval '1 second' AS rdate from adata;
我尝试使用更新语句:

update adata set rdate = (select timestamp 'epoch' + timestamp * interval '1 second' AS rdate from adata);


ts              rdate
1611306839      need date here
1611469226      need date here
1611399334      need date here
1611373685      need date here
我尝试过的另一个选择:

update adata set rdate = (select (timestamp 'epoch' + timestamp * interval '1 second') AS rdate from adata);

似乎要更新表中的现有行。在这种情况下,您将使用
UPDATE
命令

由于行将根据同一表中其他列的值进行更新,因此您可以简单地使用:

updateadata SET rdate=时间戳'epoch'+时间戳*间隔'1秒'
其中
timestamp
是包含现有值的列


(使用
INSERT
会添加额外的行,这可能不是您想要的。)

目前,我已经创建了另一个表,并将数据插入到新表中。请尝试:
UPDATE adata SET rdate=timestamp'epoch'+timestamp*interval'1秒’
我使用了您遇到问题的确切SQL,因此我猜问题更为基本。你犯了什么错误?我认为有一个列命名为相同的保留字可能在发挥作用。sql中的第一个时间戳是保留字,但第二个是列引用。Try-insert into adata(rdate)从adata中选择时间戳'epoch'+“timestamp”*间隔'1秒'作为rdate@JohnRotenstein非常感谢…您的解决方案有效…我将接受它作为答案。@BillWeiner非常感谢您的建议…但是,我无法更改列标题,因为它是由我的客户提供的一个更大的转储。再次感谢你的建议。