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

时间:2021-02-01 07:48:50

标签: amazon-web-services date timestamp sql-update amazon-redshift

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

什么是有效的;

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);

1 个答案:

答案 0 :(得分:1)

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

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

UPDATE adata SET rdate = timestamp 'epoch' + timestamp * interval '1 second'

其中 timestamp 是包含现有值的列。

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

相关问题