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