Redshift:毫秒到时间戳

sun*_*ess 2 timestamp type-conversion amazon-redshift

假设我们有两个表:

CREATE TABLE IF NOT EXISTS tech_time(
    ms_since_epoch BIGINT
);

CREATE TABLE IF NOT EXISTS readable_time(
    ts timestamp without time zone,
);
Run Code Online (Sandbox Code Playgroud)

假设tech_time有数据并且我们想要填充readable_time

所以在 Postgres 中你可以使用to_timestamp(double precision)并做类似的事情

INSERT INTO readable_time(ts)
SELECT DISTINCT to_timestamp(ms_since_epoch::float / 1000) AS ts,
FROM tech_time;
Run Code Online (Sandbox Code Playgroud)

Amazon Redshift 中似乎不存在这样的功能:

函数 to_timestamp(双精度) 不存在

我的问题是:如何正确填充readable_time,同时损失最少的精度?

Tim*_*sen 5

我们可以尝试使用DATEADD并将其添加ms_since_epoch到 1970 年 1 月 1 日:

INSERT INTO readable_time (ts)
SELECT DATEADD(ms, ms_since_epoch, 'epoch')
FROM tech_time;
Run Code Online (Sandbox Code Playgroud)