Você não pode usar parâmetros como identificadores (=nome da coluna), você precisa de SQL dinâmico para isso. E isso requer PL/pgSQL:
CREATE OR REPLACE FUNCTION day_entries(p_id int, p_column text)
RETURNS BIGINT[]
AS
$$
declare
l_result bigint[];
begin
execute format('SELECT %I FROM days WHERE id = $1', p_column)
using p_id
into l_result;
return l_result;
end;
$$
LANGUAGE plpgsql;
format() lida adequadamente com identificadores ao construir SQL dinâmico. O
$1
é um espaço reservado de parâmetro e o valor para isso é passado com o using p_id
cláusula do execute
demonstração.