Функция для преобразования эпохи во временную метку в Amazon Redshift

#sql #datetime #timestamp #amazon-redshift #sql-function

#sql #дата и время #временная метка #amazon-redshift #sql-функция

Вопрос:

Я работаю над базой данных Amazon Redshift, и у меня есть даты в миллисекундах с эпохи. Я хочу преобразовать это в метку времени и написать этот запрос, который я нашел в другом потоке

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

выдает мне результат в ГГГГ-ММ-ДД ЧЧ: ММ: СС.

Мой вопрос: как мне написать SQL-функцию в Redshift, которая принимает целочисленный параметр, равный миллисекундам, и выполняет это преобразование?

Спасибо.

Ответ №1:

Похоже, вам нужен скалярный UDF, который переносит код преобразования.

В Redshift вы могли бы записать это как:

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