在Amazon Redshift

问题描述

我正在使用Amazon Redshift数据库,并且自日期以来的毫秒数为单位。我想将其转换为时间戳,并编写在另一个线程上找到的查询

SELECT TIMESTAMP 'epoch' + column_with_time_in_ms/1000 *INTERVAL '1 second'
FROM table_name LIMIT 1000;

将结果提供给YYYY-MM-DD HH:MM:SS。

我的问题是: 如何在Redshift中编写一个sql函数,该函数采用整数参数(毫秒)进行转换?

谢谢。

解决方法

您似乎想要包装转换代码的标量UDF。

在Redshift中,您可以这样写:

create function ms_epoch_to_ts(int)
    returns timestamp
    immutable
as $$
    select timestamp 'epoch' + $1 / 1000 * interval '1 second'
$$ language sql;